通过优先级,决定group by 字段 的值

最近有个需要,是通过要统计考勤的记录

同一个人,多次记录,只计算优先级为最高的, 这里是 考勤>请假>缺席

虽然感觉不是最优的方法,但是先记录一下

先通过 case 赋予字段不同值的优先级, 在通过 max()函数在提取出最大优先级的值,最后在通过优先级重新赋值

张飞出勤
张飞请假
张飞

缺席


SELECT
	count(1) count,
	CASE t2. STATUS
            WHEN 2 THEN  '出勤'
            WHEN 1 THEN  '请假'
            ELSE  '缺勤'
        END AS STATUS
FROM
	(
		SELECT
			Max(t1. STATUS) STATUS,
			username
		FROM
			(
				SELECT
					kq.username,
					kq.attendance_date,
					CASE kq. STATUS
				WHEN '出勤' THEN	2
				WHEN '请假' THEN	1
				ELSE	0
				END AS STATUS
				FROM	kqljl kq
			) t1
		GROUP BY   username , attendance_date
	) t2
GROUP BY   t2. STATUS

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值