sql 统计一组数据中的每月有几条,最近十二个月数据,

统计一组数据中的每月有几条

SELECT  DATE_FORMAT(create_time, '%m') AS month, COUNT(*) AS sum
FROM 
GROUP BY month;

在这里插入图片描述

结果

在这里插入图片描述

统计十二个月每月有几条的数据

思路

  • 第一步拿到近十二个月时间
  • 第二步查询每月数据条数
  • 组合查询语句 得到最终结果

sql

  • 第一步拿到近十二个月时间
  • interval 1 day ,解释为将时间间隔设置为1天。
  • SELECT DATE_FORMAT(CURDATE(), '%Y.%m') AS month; 当前时间月
  • SELECT DATE_FORMAT((CURDATE() - INTERVAL 1 MONTH), '%Y.%m') AS month;上一个月时间
      

        SELECT DATE_FORMAT(CURDATE(), '%Y.%m') AS `month1`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 1 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 2 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 3 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 4 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 5 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 6 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 7 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 8 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 9 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 10 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 11 MONTH), '%Y.%m') AS `month`

在这里插入图片描述

  • 第二步查询每月数据条数
  SELECT DATE_FORMAT(create_time, '%Y.%m') AS month2, COUNT(*) AS monthNum
                            FROM u_user  u
                           where 1= 1
                            GROUP BY month2

在这里插入图片描述

  • 组合查询语句 得到最终结果
select a.month1 month, b.monthNum
        from (SELECT DATE_FORMAT(CURDATE(), '%Y.%m') AS `month1`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 1 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 2 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 3 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 4 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 5 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 6 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 7 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 8 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 9 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 10 MONTH), '%Y.%m') AS `month`
              UNION
              SELECT DATE_FORMAT((CURDATE() - INTERVAL 11 MONTH), '%Y.%m') AS `month`) a
                 left join (SELECT DATE_FORMAT(create_time, '%Y.%m') AS month2, COUNT(*) AS monthNum
                            FROM u_user  u
                            where 1=1
                            GROUP BY month2) b on a.month1 = b.month2
        ORDER BY a.month1
        

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值