• 【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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139

    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 
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
  • 相关阅读:
    【C++】unordered_set、unordered_map的介绍及使用
    WebService总结
    shell编程规范与变量
    Django之rest_framework(九)
    ChatGPT遭受匿名苏丹组织DDoS攻击:网络安全在AI时代的新挑战
    springcloud引入Eureka报错
    从 Numpy+Pytorch 到 TensorFlow JS:总结和常用平替整理
    NestJS学习:使用session实现登录验证
    HashMap每次扩容时,为什么都必须是2的N次方?
    TF-IDF
  • 原文地址:https://blog.csdn.net/qq_37029026/article/details/126159747