- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
数据库的相关表声明如下:
students (student_id (PK), full_name, semester, ...)
subjects (subject_code (PK), subject_title, semester)
teacher_attendance (class_id (PK), subject_code(FK), teacher_id(FK), date)
student_attendance (class_id (FK), student_id (FK))
示例数据:
学生们:
student_id - mca1701
.
.
.
<a lot of irrelevant fields>
.
semester - 3
主题:
subject_code subject_title semester
CS006 Subject6 2
CS007 Subject7 3
CS008 Subject8 3
CS009P Subject9 Practical 3
CS009T Subject9 Theory 3
学生出勤率:
class_no student_id
1 mca1801
1 mca1802
1 mca1805
2 *mca1701*
2 mca1702
3 *mca1701*
2 mca1704
3 mca1705
4 mca1601
4 mca1602
6 mca1803
6 mca1804
7 *mca1701*
教师出勤率:
class_no subject_code teacher_id date
1 CS001 mca01 2019-01-14
2 CS009P mca01 2019-01-09
3 CS009P mca01 2019-01-09
4 CS013 mca01 2019-01-17
5 CS002 mca02 2019-01-02
6 CS002 mca02 2019-01-10
7 CS009T mca02 2019-01-16
8 CS014 mca02 2019-01-29
9 CS014 mca02 2019-01-29
10 CS008 mca05 2019-01-14
11 CS003P mca03 2019-01-15
12 CS015P mca03 2019-01-15
13 CS009T mca02 2019-01-15
教师出勤表为每个类(class)分配一个唯一数字id
。
学生出勤表记录了该类学生的学号。
我想在针对特定输入 student_id
的单个查询中显示以下内容:
subject_code, subject_title, classes_attended, total_classes, % attendance
使用此查询:
SELECT subject_code, subject_title, count(class_no) as attended
FROM
student_attendance
INNER JOIN teacher_attendance USING (class_no)
INNER JOIN subjects USING (subject_code)
WHERE
student_id='mca1701'
GROUP BY
subject_code
我能够得到 subject_code, subject_title, classes_attended
:
示例操作:
subject_code subject_title attended
CS009P Subject 9 prac 2
CS009T Subject 9 theory 1
从这个查询中我可以获得 total_classes :
select subject_code,subject_title,count(class_no) as total_classes
from teacher_attendance
INNER JOIN subjects USING (subject_code)
WHERE semester= (SELECT semester from students where student_id='mca1701')
GROUP BY subject_code
示例操作:
subject_code subject_title total_classes
CS008 Subject8 1
CS009P Subject9 Practical 2
CS009T Subject9 Theory 2
我想在单个查询中获取以下数据:
要求的输出:
subject_code subject_title attended total %att
CS009P Subject 9 prac 2 2 100%
CS009T Subject 9 theory 1 2 50%
CS007 Subject7 0 0 0
CS008 Subject8 0 1 0
更新:
感谢 Joakim Danielson,得到了答案。仅在他的答案中将第二个 JOIN 更改为 LEFT JOIN,这将空行显示为 null,这就足够了。
解决方法:
SELECT u.subject_code, u.subject_title,t_count,s_count
FROM subjects u
JOIN students ON students.semester=u.semester
AND students.student_id='mca1701'
LEFT JOIN (SELECT subject_code, COUNT(*) t_count
FROM teacher_attendance GROUP BY subject_code) tc
ON tc.subject_code = u.subject_code
LEFT JOIN (SELECT COUNT(*) s_count,subject_code
FROM student_attendance INNER JOIN teacher_attendance
USING (class_no) WHERE student_id='mca1701'
GROUP BY subject_code) sc
ON sc.subject_code = u.subject_code
GROUP BY u.subject_code, u.subject_title
如果有人能简化这个查询,我将不胜感激。
最佳答案
新版本包括一位老师参加的所有科目
SELECT u.subject_code, u.subject_title, count(s.class_no) as attended , tc.t_count total, CONCAT(FORMAT(100 * count(s.class_no) / tc.t_count, 0), '%') '%att'
FROM subjects u
LEFT JOIN teacher_attendance t ON t.subject_code = u.subject_code
JOIN (SELECT subject_code, COUNT(*) t_count FROM teacher_attendance GROUP BY subject_code) tc ON tc.subject_code = u.subject_code
LEFT JOIN student_attendance s ON t.class_no = s.class_no AND s.student_id = 'mca1701'
WHERE semester = 3
GROUP BY u.subject_code, u.subject_title
我使用单独的子查询来计算总值(value)。 (我跳过了主题表,但很容易添加)
SELECT t.subject_code, count(t.class_no) as attended , tc.t_count total, CONCAT(FORMAT(100 * count(t.class_no) / tc.t_count, 0), '%') %att
FROM student_attendance s
JOIN teacher_attendance t ON t.class_no = s.class_no
JOIN (SELECT subject_code, COUNT(*) t_count FROM teacher_attendance GROUP BY subject_code) tc ON tc.subject_code = t.subject_code
WHERE student_id='mca1701'
GROUP BY subject_code
关于mysql - 使用 student_id 显示学生出勤情况的单一查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54231942/
我想在单个 View 中显示文本、图像。也请帮助我 我想从我的类(class)而不是 xml 提供图像的 src 请帮助谢谢 最佳答案 你可以为此使用Button Button b=new Butto
我有一个消息模型,管理员和用户都可以创建消息。但对于管理员和用户来说,有单独的模型,称为管理员和用户。 消息模型有一个名为“created_by”的列,用于存储创建者的 ID。现在的问题是我如何与 M
我无法为菜单资源充气,并且无法将其附加到我的 Activity 的工具栏上。 这似乎很简单,但是我想我缺少明显的东西。我正在使用NavGraph,所以我不知道这是否影响工具栏? 有人看到我做错了吗?
我正在开发一个应用程序,它有一个 MainActivity 并且有许多用于医院、诊所的 ImageViews ... 当按下其中一个时,它会带你到一个新的 Activity DisplayActivi
我会尽量保持简短,但我需要一些建议。 我所在的团队正在并行开发适用于 android、iphone 和 wp7 的应用程序。我们有一个设计团队,可以为所有三个平台提出一个单一的设计。 最新应用程序的设
我正在使用 Josh Smith 中的示例.他有一个显示 CustomerViewModel 列表的 WorkspaceViewModel。他使用相同的 ViewModel 来显示所有客户和编辑一个客
我是 Azure 新手,正在尝试了解各种服务,目前我正在尝试了解移动服务及其各种功能,例如身份验证和推送。 移动服务是否仅支持一种操作系统上的一个应用程序,还是可以在多个操作系统(Android、iO
我在 Stoyan Stefanov 的书中读到了关于单一变量模式的内容。 JSLint 也很好。 但我在我的代码中注意到我可能会重载此模式。整个我的 .js 文件,整个脚本只是一个大变量。 例如:
我想在一个 View 中添加多个具有不同不透明度的阴影。阴影的规范如下: Y 偏移量为 4,模糊半径为 1 Y 偏移量为 10,模糊半径为 10 Y 偏移量为 2,模糊半径为 4 1 的模糊半径,1
我们有几个 API,我们希望通过客户端凭据流授予对客户端的访问权限。流程会像这样。 客户端根据某个范围从 is4 获取 token 客户端使用 token 访问第一个 API 客户端需要使用相同的 t
我是 ruby on rails 的新手。我正在尝试在 ruby on rails 上设计一个注册表单,该表单具有 Basic 和 Paid 用户的单选按钮。当用户点击付费并点击提交时,应该会
我用 Entity Framework 6 开发了一个项目,该项目使用 MySQL 作为数据库。在我的 Windows 系统上,该项目正在运行。现在我试图在我的 linux 机器上移动那个项目。为了运
我正在为我的电子商务应用程序创 build 计。它将拥有由 AWS Lambda 支持的多项服务。 Orderservice、InventoryService、PaymentService、Loggi
我目前正在开发一个执行以下操作的单 View 应用程序: 使用 CoreLocation 获取用户位置 将他们的经/纬度发送到 API 以 JSON 格式返回潮汐数据 深入研究 JSON 中的对象和键
我想托管各种 Angular2 应用程序,这些应用程序使用相同的框架包和来自根域和子域的 node_modules: domain.com subdomain.domain.com sub2.doma
我正在尝试使用 Git Publisher 插件来标记带有 $BUILD_TAG 的成功构建,但我无法找出它将接受的 Target remote name 的值。如果我在 GIT 配置中使用 Repo
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
有一个带有许多控件的 View (窗口),以简化: 此 View 用于显示和编辑多个配置: public class ViewModel: INotifyPropertyChanged
我有一个 textView 和类似的文本 “这是带有 KeyWord 和 Link 浏览的简单文本” 在上面的文字中我想制作.. 点击链接可打开该网址和点击该关键字在我的应用程序中打开一个新 Acti
我在我现有的应用程序中有一个任务,我们有 2 个不同的数据库,一个在 SQL Server 中,另一个在 Oracle 中,但是两个模式是相同的。 目前我们有一个使用 Entity Framework
我是一名优秀的程序员,十分优秀!