我正在开发学生出勤系统并尝试执行此查询:
select s.full_name,
s.student_id,
count(a.id) as total_present,
count(CASE WHEN TIMEDIFF(min(a.punch_in_time),'10:00:00') THEN '1' END) 'late'
from student s, attendance_record a
where a.student_id=s.student_id
and a.punch_in_date BETWEEN '2018-12-26' and '2018-12-26'
group by s.student_id
但这表明一个错误总是“组函数的无效使用”
我找不出什么毛病。请帮帮我。
3条答案
按热度按时间x6492ojm1#
在group by中,必须放置所有非聚合列:
注意:最好使用“left join”或“inner join”作为联接表,因为这样可读性更好
watbbzwu2#
vuv7lop33#
我建议这样写:
你的逻辑
late
很奇怪。为什么一个时间戳为'09:59:59'
被认为迟到?