如何让现在和缺席的学生一年

时间:2016-12-15 10:32:31

标签: mysql

我需要得到总数。一年内出席和缺席的学生出席和缺席: 这是我的疑问:

SELECT if( status = 'P',count(level_id), 0) AS present, 
       if(status='A',count(student_id), 0) AS Absent 
        FROM attendance WHERE level_id = 'L1' AND date LIKE '2016%'

但这会返回总数。学生要么出现要么缺席。

4 个答案:

答案 0 :(得分:2)

问题在于您误解了COUNT(...)在查询中的作用。如果您真的想根据缺席或在场进行计数,那么您可以使用SUM(...)内置条件步骤。

SELECT
    SUM(if(status = 'P', 1, 0)) AS Present
    SUM(if(status = 'A', 1, 0)) AS Absent
FROM
    attendance
WHERE
    level_id = 'L1' AND date LIKE '2016%'

答案 1 :(得分:1)

如果你需要计算元素,则返回1:

 SELECT SUM(if( status = 'P',1, 0)) AS present, SUM(if(status='A',1, 0)) AS Absent
 FROM attendance WHERE level_id = 'L1' AND date LIKE '2016%'

答案 2 :(得分:0)

尝试 group by 子句,如:

SELECT 
 status, 
 count(student_id) as attendance 
FROM attendance 
WHERE level_id = 'L1' 
  AND date LIKE '2016%' 
GROUP BY status;

它将为您提供表格中可用状态的计数

答案 3 :(得分:0)

这将起作用:

SELECT DISTINCT(student_name), SUM(status = 'P') AS present, SUM(status='A') AS Absent FROM attendance GROUP BY student_name where date LIKE '2016%'