场景描述
假定有一考勤表(t_kaoqin)存储某班级学生的所有考勤记录,有如下字段
No(学号),name(姓名),kaoqin(考勤结果:1——早退,2——正常出勤,3——迟到),现要统计某段时间内所有学生的考勤情况,查询结果要求如下:
学号 姓名 早退 正常出勤 迟到
01 张三 10 50 20
02 李四 5 55 4
…… …… ……
执行语句
SELECT k.No 学号,k.name 姓名, (SELECT COUNT(*) FROM t_kaoqin WHERE No=k.No AND kaoqin ='1') 早退, (SELECT COUNT(*) FROM t_kaoqin WHERE No=k.No AND kaoqin ='2') 正常出勤, (SELECT COUNT(*) FROM t_kaoqin WHERE No=k.No AND kaoqin ='3') 迟到 FROM t_kaoqin k GROUP BY No
数据库为MySQL,感觉执行效率很差,求教效率更高的写法,谢谢大家的指导!!