最近项目中出现类似问题,今天分享一下,希望对你们有所帮助,我只是一个菜鸟,如有大神,请多指点勿耻笑,都是这么过来的。
看效果图:
上图 中的 每天对应的值 在数据库中的字段 是同一个,但value 是通过1 ,2 ,3 代替的,
现在要统计每个人 不同 value 的个数
看数据库 :
这是数据库 设计 员工的出勤 记录 为 value_id 而 value_id 对应的值 在另一张表里,也就是 record_value
现在 我们看看 sql 该如何写
/*先查询第一张表的内容 在关联 第二张表 当然 还要关联用户表*/
SELECT t.* ,
COUNT(CASE WHEN tv.record_value = '1' then '1' end) as "休" , //为了展示 我直接 as 中文
COUNT(CASE WHEN tv.record_value = '2' then '2' end) as "差",
COUNT(CASE WHEN tv.record_value = '3' then '3' end) as "出勤"
from timecard t
LEFT JOIN timecard_value tv on tv.id=t.value_id
LEFT JOIN employee e ON e.id = t.user_id
GROUP BY user_id //通过用户分组
然后看 查询结果 :
这样就统计出了 员工集体出勤情况
好了 分享就到此结束了,希望奋斗在开发路上的兄弟们,多多加油,明天会更好,我们一起努力;