我通过表格发布了student_id = 14,我需要获取student_id的出勤报告,如下所示
CLASS STUDENT_ID YEAR MONTH TOTAL_CLASSES TOTAL_PRESENT
11 14 2016 April 21 20
11 14 2016 May 25 25
11 14 2016 June 30 29
11 14 2016 July 18 18
11 14 2017 January 28 28
此处TOTAL_CLASSES表示学校开放的总天数,TOTAL_PRESENT表示学生在TOTAL_CLASSES中出现的总人数。
从HTML表单I GOT只有student_id = 14,我需要获取并显示上述记录。
请在此处查看sqlfiddle以支持我的回答http://sqlfiddle.com/#!9/63b6a/3
在我的表中,备注代表1,2,3表示现在,0代表缺席。
答案 0 :(得分:1)
您正在计算每个year
,month
,class
和student
的出勤人数。此查询的关键步骤是使用GROUP BY
指示您要分组的列,然后使用COUNT和SUM聚合函数计算您要查找的考勤列:
SELECT
class_id,
student_id,
YEAR(att_date) as year,
MONTH(att_date) as month,
COUNT(remarks) AS total_classes,
SUM(remarks > 0) AS total_present
FROM attendance
WHERE student_id = 15
GROUP BY YEAR(att_date), MONTH(att_date), class_id, student_id;
http://sqlfiddle.com/#!9/63b6a/11
您可以删除WHERE子句以显示所有学生的出勤率。