【mysql 统计表里面6个月的数据】

mysql 统计表里面6个月的数据

1:表格数据

SELECT
	'serial_1' as '表名',
	MAX(IF(c.month = '2022-03', c.count, NULL)) AS '2022-03',
	MAX(IF(c.month = '2022-04', c.count, NULL)) AS '2022-04',
	MAX(IF(c.month = '2022-05', c.count, NULL)) AS '2022-05',
	MAX(IF(c.month = '2022-06', c.count, NULL)) AS '2022-06',
	MAX(IF(c.month = '2022-07', c.count, NULL)) AS '2022-07',
	MAX(IF(c.month = '2022-08', c.count, NULL)) AS '2022-08'
FROM
	(
	select
		DATE_FORMAT(event.create_date, '%Y-%m') as month,
		count(1) as count
	from
		serial_1 event
	where
		ISNULL(event.item_code)
	GROUP BY
		DATE_FORMAT(event.create_date, '%Y-%m')
	order by
		DATE_FORMAT(event.create_date, '%Y-%m') desc
	limit 6 ) c
union all
SELECT
	'container_1' as '表名',
	MAX(IF(c.month = '2022-03', c.count, NULL)) AS '2022-03',
	MAX(IF(c.month = '2022-04', c.count, NULL)) AS '2022-04',
	MAX(IF(c.month = '2022-05', c.count, NULL)) AS '2022-05',
	MAX(IF(c.month = '2022-06', c.count, NULL)) AS '2022-06',
	MAX(IF(c.month = '2022-07', c.count, NULL)) AS '2022-07',
	MAX(IF(c.month = '2022-08', c.count, NULL)) AS '2022-08'
FROM
	(
	select
		DATE_FORMAT(event.create_date, '%Y-%m') as month,
		count(1) as count
	from
		container_1 event
	where
		ISNULL(event.item_code)
	GROUP BY
		DATE_FORMAT(event.create_date, '%Y-%m')
	order by
		DATE_FORMAT(event.create_date, '%Y-%m') desc
	limit 6 ) c
union all
SELECT
	'reel_1' as '表名',
	MAX(IF(c.month = '2022-03', c.count, NULL)) AS '2022-03',
	MAX(IF(c.month = '2022-04', c.count, NULL)) AS '2022-04',
	MAX(IF(c.month = '2022-05', c.count, NULL)) AS '2022-05',
	MAX(IF(c.month = '2022-06', c.count, NULL)) AS '2022-06',
	MAX(IF(c.month = '2022-07', c.count, NULL)) AS '2022-07',
	MAX(IF(c.month = '2022-08', c.count, NULL)) AS '2022-08'
FROM
	(
	select
		DATE_FORMAT(event.create_date, '%Y-%m') as month,
		count(1) as count
	from
		reel_1 event
	where
		ISNULL(event.item_code)
	GROUP BY
		DATE_FORMAT(event.create_date, '%Y-%m')
	order by
		DATE_FORMAT(event.create_date, '%Y-%m') desc
	limit 6 ) c
union all
SELECT
	'batch_1' as '表名',
	MAX(IF(c.month = '2022-03', c.count, NULL)) AS '2022-03',
	MAX(IF(c.month = '2022-04', c.count, NULL)) AS '2022-04',
	MAX(IF(c.month = '2022-05', c.count, NULL)) AS '2022-05',
	MAX(IF(c.month = '2022-06', c.count, NULL)) AS '2022-06',
	MAX(IF(c.month = '2022-07', c.count, NULL)) AS '2022-07',
	MAX(IF(c.month = '2022-08', c.count, NULL)) AS '2022-08'
FROM
	(
	select
		DATE_FORMAT(event.create_date, '%Y-%m') as month,
		count(1) as count
	from
		batch_1 event
	where
		ISNULL(event.item_code)
	GROUP BY
		DATE_FORMAT(event.create_date, '%Y-%m')
	order by
		DATE_FORMAT(event.create_date, '%Y-%m') desc
	limit 6 ) c

2:统计最近6个月的数据,基数是前6个月之前数据之合,后6个月的数据就是每月的数据+基数


select d.month , sum(num) as num from (
   SELECT
	a.month,
	IFNULL(b.num + (select count(1) from batch_1 where ISNULL(item_code) and create_date < DATE_SUB(CURDATE(), INTERVAL 5 MONTH)), 0 + (select count(1) from batch_1 where ISNULL(item_code) and create_date < DATE_SUB(CURDATE(), INTERVAL 5 MONTH))) AS num
FROM
	(
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 4 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(CURDATE(), '%Y-%m') AS month ) a
LEFT JOIN (
	SELECT
		DATE_FORMAT(create_date, '%Y-%m') AS DATETIME,
		count(1) AS num
	FROM
		batch_1
	WHERE
		ISNULL(item_code)
	GROUP BY
		DATE_FORMAT(create_date, '%Y-%m') ) b ON
	a.month = b.datetime
UNION ALL
SELECT
	a.month,
	IFNULL(b.num + (select count(1) from reel_1 where ISNULL(item_code) and create_date < DATE_SUB(CURDATE(), INTERVAL 5 MONTH)), 0 +(select count(1) from reel_1 where ISNULL(item_code) and create_date < DATE_SUB(CURDATE(), INTERVAL 5 MONTH))) AS num
FROM
	(
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 4 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(CURDATE(), '%Y-%m') AS month ) a
LEFT JOIN (
	SELECT
		DATE_FORMAT(create_date, '%Y-%m') AS DATETIME,
		count(1) AS num
	FROM
		reel_1
	WHERE
		ISNULL(item_code)
	GROUP BY
		DATE_FORMAT(create_date, '%Y-%m') ) b ON
	a.month = b.datetime
UNION ALL
SELECT
	a.month,
	IFNULL(b.num + (select count(1) from container_1 where ISNULL(item_code) and create_date < DATE_SUB(CURDATE(), INTERVAL 5 MONTH)), 0 +(select count(1) from container_1 where ISNULL(item_code) and create_date < DATE_SUB(CURDATE(), INTERVAL 5 MONTH))) AS num
FROM
	(
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 4 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(CURDATE(), '%Y-%m') AS month ) a
LEFT JOIN (
	SELECT
		DATE_FORMAT(create_date, '%Y-%m') AS DATETIME,
		count(1) AS num
	FROM
		container_1
	WHERE
		ISNULL(item_code)
	GROUP BY
		DATE_FORMAT(create_date, '%Y-%m') ) b ON
	a.month = b.datetime
	UNION ALL
SELECT
	a.month,
	IFNULL(b.num + (select count(1) from serial_1 where ISNULL(item_code) and create_date < DATE_SUB(CURDATE(), INTERVAL 5 MONTH)), 0 +(select count(1) from serial_1 where ISNULL(item_code) and create_date < DATE_SUB(CURDATE(), INTERVAL 5 MONTH))) AS num
FROM
	(
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 4 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') AS month
UNION ALL
	SELECT
		DATE_FORMAT(CURDATE(), '%Y-%m') AS month ) a
LEFT JOIN (
	SELECT
		DATE_FORMAT(create_date, '%Y-%m') AS DATETIME,
		count(1) AS num
	FROM
		serial_1
	WHERE
		ISNULL(item_code)
	GROUP BY
		DATE_FORMAT(create_date, '%Y-%m') ) b ON
	a.month = b.datetime
	) d
	GROUP BY d.month

3:

 SELECT 
    'batch_1' as 'table',
    a.month,IFNULL(b.num,0) AS num
    FROM ( 
	SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 MONTH),'%Y-%m') AS month 
    UNION ALL
	SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 4 MONTH),'%Y-%m') AS month 
    UNION ALL
    SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH),'%Y-%m') AS month 
    UNION ALL 
    SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 MONTH),'%Y-%m') AS month 
    UNION ALL 
    SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH),'%Y-%m') AS month 
    UNION ALL 
    SELECT DATE_FORMAT(CURDATE(),'%Y-%m') AS month 
    ) a  LEFT JOIN ( 
    SELECT DATE_FORMAT(create_date,'%Y-%m')  AS DATETIME, count(1) AS num
    FROM batch_1
    WHERE ISNULL(item_code)
    GROUP BY DATE_FORMAT(create_date,'%Y-%m') 
    ) b ON a.month = b.datetime
    
    UNION ALL 
    
    SELECT 
    'reel_1' as 'table',
    a.month,IFNULL(b.num,0) AS num
    FROM ( 
	SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 MONTH),'%Y-%m') AS month 
    UNION ALL
	SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 4 MONTH),'%Y-%m') AS month 
    UNION ALL
    SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH),'%Y-%m') AS month 
    UNION ALL 
    SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 MONTH),'%Y-%m') AS month 
    UNION ALL 
    SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH),'%Y-%m') AS month 
    UNION ALL 
    SELECT DATE_FORMAT(CURDATE(),'%Y-%m') AS month 
    ) a  LEFT JOIN ( 
    SELECT DATE_FORMAT(create_date,'%Y-%m')  AS DATETIME, count(1) AS num
    FROM reel_1
    WHERE ISNULL(item_code)
    GROUP BY DATE_FORMAT(create_date,'%Y-%m') 
    ) b ON a.month = b.datetime 
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值