【mysql】case...when...、group...by、sum() 聚合函数... 企业组合使用实际场景示例

查询需求场景

-- 统计当月不同流程类型的审批通过流程数、审批终止流程数、审批驳回流程数、新增流程数(归档+终止+退回)、申请总条目数(关联任务单申请条目数总数)

-- 查询思路:
-- 1. 获取当月创建的所有流程  tn_workflow_instance_node(create_time like concat( '2024-09', '%') && node_no = 1 )
-- 2. 按照流程类型进行分组:新增、扩充、冻结、解冻、变更
-- 3. 统计每个组内不同审批状态(终止、退回、归档)总数
-- 4. 关联任务单统计申请条目总数


-- tn_workflow_instance_node 流程实例节点表 (统计流程发起时间在本月内及关联流程实例和任务单用到)
-- tn_workflow_instance 流程实例表 (统计流程的状态是通过、退回、终止时关联用到)
-- tn_work_task 任务单表 (统计流程关联任务单审批的总条目数用到)

预设查询结果

如下:
在这里插入图片描述

SQL实现查询

SELECT
	CASE
		wn.workflow_id 
		WHEN 'WF12304702' THEN
		'扩充' 
		WHEN 'WF182295840' THEN
		'冻结' 
		WHEN 'WF30500982' THEN
		'新增' 
		WHEN 'WF657578194' THEN
		'变更' 
		WHEN 'WF734432211' THEN
		'解冻' 
		ELSE 'Unknown' 
	END AS 流程类型,
	SUM( CASE WHEN wi.STATUS = 'archived' THEN 1 ELSE 0 END ) AS 审批通过总数,
	SUM( CASE WHEN wi.STATUS = 'suspend' THEN 1 ELSE 0 END ) AS 审批中止总数,
	SUM( CASE WHEN wi.STATUS = 'return' THEN 1 ELSE 0 END ) AS 审批退回总数,
	SUM( CASE WHEN wi.STATUS IN ( 'return', 'suspend', 'archived' ) THEN 1 ELSE 0 END ) AS 新增流程总数,
	SUM( wt.apply_count ) AS 任务单申请总条目数 
FROM
	tn_workflow_instance_node wn
	JOIN tn_workflow_instance wi ON wn.workflow_instance_id = wi.workflow_instance_id
	JOIN tn_work_task wt ON wi.task_id = wt.task_id 
WHERE
	wn.create_time LIKE concat( '2024-09', '%' ) 
	AND wn.node_no = 1 
	AND wi.STATUS IN ( 'return', 'suspend', 'archived' ) 
GROUP BY
	wn.workflow_id
	
	

	
	

	

查询结果:

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码元宋大米

感谢小主大赏,留言可进互助群~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值