MySQL查询每个月的数量, 以及每个月的同比环比数据

说明 : a_query表就是一张空表

# 查询今年案件上报每个月的数量, 以及每个月上报案件的同比环比数据
SELECT
	monthData.months AS '月份',
	monthData.thisMonth AS '月数量',
	IFNULL( CONVERT( ( (monthData.thisMonth - monthData.lastYearThisMonth) / monthData.lastYearThisMonth *100), DECIMAL(10,2) ), 0) AS '同比', 
	IFNULL( CONVERT( ( (monthData.thisMonth - monthData.lastMonth) / monthData.lastMonth *100), DECIMAL(10,2) ), 0) AS '环比'
FROM(	
	SELECT 
		monthTable.months AS months,
		(
			SELECT 
			   COUNT(id) AS tCount
			FROM
			    case_report
			WHERE
			    is_delete = 0 AND DATE_FORMAT(case_report_time, '%Y-%m') = monthTable.months AND case_area_code LIKE('150201%')
		) AS thisMonth,
		(
			SELECT 
			   COUNT(id) AS tCount
			FROM
			    case_report
			WHERE
			    is_delete = 0 AND PERIOD_DIFF(DATE_FORMAT(STR_TO_DATE(CONCAT(monthTable.months,'-01'),"%Y-%m-%d"), '%Y%m' ), DATE_FORMAT(case_report_time, '%Y-%m' )) = 1
			    AND case_area_code LIKE('150201%')
		) AS lastMonth,
		(
			SELECT 
			   COUNT(id) AS tCount
			FROM
			    case_report
			WHERE
			    DATE_FORMAT(case_report_time, '%Y%m') = DATE_FORMAT(DATE_SUB(STR_TO_DATE(CONCAT(monthTable.months,'-01'),"%Y-%m-%d") ,INTERVAL 1 YEAR), '%Y%m')
			    AND case_area_code LIKE('150201%')
		) AS lastYearThisMonth,
		(
			SELECT 
			   COUNT(id) AS tCount
			FROM
			    case_report
			WHERE
			    case_area_code LIKE('150201%')
		) AS totalData
	FROM (SELECT 
		CONCAT('2022-', LPAD(id, 2, '0')) AS months	
	FROM
		a_query
	ORDER BY 
		id	 
	LIMIT 12
	) monthTable
) monthData


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值