假设要分别统计 小明,小王,小红 三人本学期迟到次数。

由于小王没有迟到过,所以缺勤流水表格当中没有小王的记录,如果我们这样搜索:

1 select name, count(*) from {缺勤流水表格} where name in (小明,小王,小红) group by name

那么我们得到的将是:

小明  3

小红  4

并没有小王的记录!

解决方法 -- 运用CASE WHEN语句:

1 slelct name, count(case when name in (小明,小王,小红) then 1 else 0 end)  from {缺勤流水表格}  group by name

得到的结果为:

小明  3

小王  0

小红  4

 另外说一下,不是每中情况下都能找到这样的 case when语句,也有可能需要我们对sql语句改动一下,例如:

 

1 select t1.name,  ifnull( t2.count,0)  from {缺勤流水表格} as t1
2 
3 join
4 
5 (select id, name, count(*) as count from {缺勤流水表格} where name in (小明,小王,小红) group by name) as t2
6 
7 on t1.id = t2.id

 

相关文章:

  • 2021-05-23
  • 2022-12-23
  • 2021-07-22
  • 2022-12-23
  • 2022-12-23
  • 2021-08-08
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-26
  • 2022-12-23
  • 2021-09-11
  • 2022-01-01
  • 2021-05-19
相关资源
相似解决方案