0
点赞
收藏
分享

微信扫一扫

复杂聚合SQL-统计某个月份 某个税务机关 各个税种的情况

影子喵喵喵 2022-04-24 阅读 13
SELECT
	a.sjtjsj,
	a.JSBHS,
	a.ZQSYGZR,
	a.zt_dr_hs,
	a.zt_dr_jd,
	( @sum0 := @sum0 + a.zt_dr_hs ) AS zt_lj_hs,
	ROUND( @sum0 / a.JSBHS * 100, 0 ) AS zt_lj_jd,
	a.dzswj_dr_hs,
	a.dzswj_dr_jd,
	( @sum1 := @sum1 + a.dzswj_dr_hs ) AS dzswj_lj_hs,
	ROUND( @sum1 / @sum0 * 100, 0 ) AS dzswj_lj_jd,
	a.bsfwt_dr_hs,
	a.bsfwt_dr_jd,
	( @sum2 := @sum2 + a.bsfwt_dr_hs ) AS bsfwt_lj_hs,
	ROUND( @sum2 / @sum0 * 100, 0 ) AS bsfwt_lj_jd,
	a.qt_dr_hs,
	a.qt_dr_jd,
	( @sum3 := @sum3 + a.qt_dr_hs ) AS qt_lj_hs,
	ROUND( @sum3 / @sum0 * 100, 0 ) AS qt_lj_jd
FROM
	(
	SELECT
		DATE_FORMAT( sjtjsj, "%Y-%m-%d" ) sjtjsj,
		JSBHS JSBHS,
		ZQSYGZR ZQSYGZR,
		SUM( YSBHS ) 'zt_dr_hs',
		ROUND( SUM( YSBHS ) / JSBHS * 100, 0 ) 'zt_dr_jd',
		sum( CASE QDLXMC WHEN '电子税务局' THEN YSBHS ELSE 0 END ) AS 'dzswj_dr_hs',
		ROUND( sum( CASE QDLXMC WHEN '电子税务局' THEN YSBHS ELSE 0 END ) / SUM( YSBHS ) * 100, 0 ) 'dzswj_dr_jd',
		sum( CASE QDLXMC WHEN '办税服务厅' THEN YSBHS ELSE 0 END ) AS 'bsfwt_dr_hs',
		ROUND( sum( CASE QDLXMC WHEN '办税服务厅' THEN YSBHS ELSE 0 END ) / SUM( YSBHS ) * 100, 0 ) 'bsfwt_dr_jd',
		(
			SUM( YSBHS ) - sum( CASE QDLXMC WHEN '电子税务局' THEN YSBHS ELSE 0 END ) - sum( CASE QDLXMC WHEN '办税服务厅' THEN YSBHS ELSE 0 END )
		) AS 'qt_dr_hs',
		(
			100 - ROUND( sum( CASE QDLXMC WHEN '电子税务局' THEN YSBHS ELSE 0 END ) / SUM( YSBHS ) * 100, 0 ) - ROUND( sum( CASE QDLXMC WHEN '办税服务厅' THEN YSBHS ELSE 0 END ) / SUM( YSBHS ) * 100, 0 )
		) AS 'qt_dr_jd'
	FROM
		t_cfsb_fsz_day
	WHERE

	    sjtjsj LIKE concat(#{sjtjMonth},'%')
        AND swjg_dm = #{swjgDm}
		AND ZSXM_DM = #{zsxmDm}
	GROUP BY
	DATE_FORMAT( sjtjsj, "%Y-%m-%d" )
	) a
, (select  @sum0 := 0,
@sum1 := 0,
@sum2 := 0,
@sum3 := 0) t

union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。
@sum1 @sum2 @sum3 是临时变量

举报

相关推荐

0 条评论