sql 求和、去重、合并、分组

一、求和

求和链接

	SELECT  ts_createtime ,c_biztype,s_orgcode FROM SPP_REQ_BASIC_INFO WHERE YEAR(ts_createtime)='2023'

执行结果
在这里插入图片描述

SELECT MONTH(ts_createtime) AS mth,s_orgcode,
	case c_biztype when '10' then 1 ELSE 0 END changgui, 
	case c_biztype when '20' then 1 ELSE 0 END dongtai, 
	case c_biztype when '30' then 1 ELSE 0 END pingzheng,
	case c_biztype when '40' then 1 ELSE 0 END dongjie,
	case c_biztype when '50' then 1 ELSE 0 END zhifu 
	FROM  (
		SELECT  ts_createtime ,c_biztype,s_orgcode FROM SPP_REQ_BASIC_INFO WHERE YEAR(ts_createtime)='2023'
	union
SELECT  ts_createtime ,'20' as c_biztype,s_orgcode FROM spp_req_dynamic_basic_info WHERE YEAR(ts_createtime)='2023'
	) u

执行结果
在这里插入图片描述

SELECT mth,
	SUM(changgui) changui,   
	SUM(dongtai) dongtai, 
	SUM(pingzheng) pingzheng, 
	SUM(dongjie) dongjie, 
	SUM(zhifu) zhifu 
FROM (          
	SELECT MONTH(ts_createtime) AS mth,s_orgcode,
	case c_biztype when '10' then 1 ELSE 0 END changgui, 
	case c_biztype when '20' then 1 ELSE 0 END dongtai, 
	case c_biztype when '30' then 1 ELSE 0 END pingzheng,
	case c_biztype when '40' then 1 ELSE 0 END dongjie,
	case c_biztype when '50' then 1 ELSE 0 END zhifu 
	FROM  (
		SELECT  ts_createtime ,c_biztype,s_orgcode FROM SPP_REQ_BASIC_INFO WHERE YEAR(ts_createtime)='2023'
	union
SELECT  ts_createtime ,'20' as c_biztype,s_orgcode FROM spp_req_dynamic_basic_info WHERE YEAR(ts_createtime)='2023'
	) u
) f
GROUP BY mth

按月份统计 数量 执行结果
在这里插入图片描述

二、合并去重统计

select * from spp_fb_freeze_info

表中数据
在这里插入图片描述

SELECT
	b.mth,
	sum( b.s_sdje ) AS je,
	count( DISTINCT s_kh ) sl 
FROM
	(
	SELECT
		fi.s_sdje,
		DATE_FORMAT( fi.ts_createtime, '%m' ) mth,
		fi.s_orgcode,
	CASE
			WHEN ( fi.s_kh IS NULL OR fi.s_kh = '' ) 
			AND ( fi.s_zh IS NOT NULL AND fi.s_zh != '' ) THEN
				fi.s_zh ELSE fi.s_kh 
			END s_kh 
FROM
	spp_fb_freeze_info fi
	LEFT JOIN spp_req_basic_info bi ON fi.s_bizid = bi.s_id 
WHERE
	fi.c_zxjg = '0' 
	AND bi.c_qqcslx IN ( '05', '06' ) 
	AND bi.c_biztype = '40' 
	AND YEAR ( bi.ts_createtime )= '2023' 
	) b 
GROUP BY
	mth	

按月份统计金额与数量 执行结果
在这里插入图片描述
三、补全、统计(分组)

SELECT a.c_datastatus AS cDatastatus,
	( CASE a.c_datastatus
	WHEN '0' THEN '待提交'
	WHEN '1' THEN '已提交'
	WHEN '2' THEN '复核通过'
	WHEN '3' THEN '复核不通过'
	WHEN '4' THEN '正在报送'
	WHEN '6' THEN '报送成功'
	WHEN '7' THEN '报送失败' END ) AS NAME,
	COUNT( a.c_datastatus ) AS num
	FROM eirs_tb_rating_info a
	
	where   a.c_datastatus != '5'
	 AND ((a.s_bustype = 'DELETE' AND a.c_datastatus != '6') or a.s_bustype != 'DELETE')
	 GROUP BY c_datastatus 

执行结果
在这里插入图片描述

	SELECT '0' AS cDatastatus,'待提交' AS NAME,0 AS num FROM dual UNION ALL
	SELECT '1' AS cDatastatus,'已提交' AS NAME,0 AS num FROM dual UNION ALL
	SELECT '2' AS cDatastatus,'复核通过' AS NAME,0 AS num FROM dual UNION ALL
	SELECT '3' AS cDatastatus,'复核不通过' AS NAME,0 AS num FROM dual UNION ALL
	SELECT '4' AS cDatastatus,'正在报送' AS NAME,0 AS num FROM dual UNION ALL
	SELECT '6' AS cDatastatus,'报送成功' AS NAME,0 AS num FROM dual UNION ALL
	SELECT '7' AS cDatastatus,'报送失败' AS NAME,0 AS num FROM dual UNION ALL
	SELECT a.c_datastatus AS cDatastatus,
	( CASE a.c_datastatus
	WHEN '0' THEN '待提交'
	WHEN '1' THEN '已提交'
	WHEN '2' THEN '复核通过'
	WHEN '3' THEN '复核不通过'
	WHEN '4' THEN '正在报送'
	WHEN '6' THEN '报送成功'
	WHEN '7' THEN '报送失败' END ) AS NAME,
	COUNT( a.c_datastatus ) AS num
	FROM eirs_tb_rating_info a
	
	where   a.c_datastatus != '5'
	 AND ((a.s_bustype = 'DELETE' AND a.c_datastatus != '6') or a.s_bustype != 'DELETE')
	 GROUP BY c_datastatus 

执行结果
在这里插入图片描述

 SELECT
	b.cDatastatus AS "cDatastatus",
	b.NAME AS "name",
	MAX( b.num ) AS "num"
	FROM
	(
	SELECT '0' AS cDatastatus,'待提交' AS NAME,0 AS num FROM dual UNION ALL
	SELECT '1' AS cDatastatus,'已提交' AS NAME,0 AS num FROM dual UNION ALL
	SELECT '2' AS cDatastatus,'复核通过' AS NAME,0 AS num FROM dual UNION ALL
	SELECT '3' AS cDatastatus,'复核不通过' AS NAME,0 AS num FROM dual UNION ALL
	SELECT '4' AS cDatastatus,'正在报送' AS NAME,0 AS num FROM dual UNION ALL
	SELECT '6' AS cDatastatus,'报送成功' AS NAME,0 AS num FROM dual UNION ALL
	SELECT '7' AS cDatastatus,'报送失败' AS NAME,0 AS num FROM dual UNION ALL
	SELECT a.c_datastatus AS cDatastatus,
	( CASE a.c_datastatus
	WHEN '0' THEN '待提交'
	WHEN '1' THEN '已提交'
	WHEN '2' THEN '复核通过'
	WHEN '3' THEN '复核不通过'
	WHEN '4' THEN '正在报送'
	WHEN '6' THEN '报送成功'
	WHEN '7' THEN '报送失败' END ) AS NAME,
	COUNT( a.c_datastatus ) AS num
	FROM eirs_tb_rating_info a
	
	where   a.c_datastatus != '5'
	 AND ((a.s_bustype = 'DELETE' AND a.c_datastatus != '6') or a.s_bustype != 'DELETE')
	 GROUP BY c_datastatus ) b 
	 GROUP BY b.cDatastatus, b.NAME 
	 ORDER BY b.cDatastatus ASC

执行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值