我需要得到总数。一年内出席和缺席的学生出席和缺席: 这是我的疑问:
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%'
但这会返回总数。学生要么出现要么缺席。
答案 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%'