如何获取学生的月度出勤报告?

时间:2016-04-01 08:39:53

标签: mysql

我通过表格发布了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代表缺席。

1 个答案:

答案 0 :(得分:1)

您正在计算每个yearmonthclassstudent的出勤人数。此查询的关键步骤是使用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子句以显示所有学生的出勤率。