MySql-日期分组

一、分别统计各时间各类型数据条数

数据库的 request_time字段

数据类型:timestamp

默认值:CURRENT_TIMESTAMP

例子: 2024-01-26 08:25:48 

原数据:

1、将数据按照日期(年月日)形式输出

按照request_time字段分组以(年月日形式)输出

   SELECT
            DATE(request_time) AS date,
            SUM(CASE WHEN task_command_value = 1 THEN 1 ELSE 0 END) AS count_1
            SUM(CASE WHEN task_command_value = 2 THEN 1 ELSE 0 END) AS count_2,
            SUM(CASE WHEN task_command_value = 3 THEN 1 ELSE 0 END) AS count_3,
            SUM(CASE WHEN task_command_value = 4 THEN 1 ELSE 0 END) AS count_4,
            SUM(CASE WHEN task_command_value = 5 THEN 1 ELSE 0 END) AS count_5
        FROM `数据库名`.表名
        GROUP BY DATE(request_time)
        ORDER BY DATE(request_time) DESC

输出结果:

2、将数据按照每月(月)形式输出

SELECT
    MONTH(request_time) AS date,
    SUM(CASE WHEN task_command_value = 1 THEN 1 ELSE 0 END) AS count_1,
    SUM(CASE WHEN task_command_value = 2 THEN 1 ELSE 0 END) AS count_2,
    SUM(CASE WHEN task_command_value = 3 THEN 1 ELSE 0 END) AS count_3,
    SUM(CASE WHEN task_command_value = 4 THEN 1 ELSE 0 END) AS count_4,
    SUM(CASE WHEN task_command_value = 5 THEN 1 ELSE 0 END) AS count_5
FROM `数据库名`.表名
GROUP BY MONTH(request_time)
ORDER BY MONTH(request_time) DESC

输出结果:缺点是如果两年的同月数据无法区别

3、将数据按照年月形式输出(使用DATE_Format函数)

SELECT
    DATE_FORMAT(request_time,'%y-%m') AS date,
    SUM(CASE WHEN task_command_value = 1 THEN 1 ELSE 0 END) AS count_1,
    SUM(CASE WHEN task_command_value = 2 THEN 1 ELSE 0 END) AS count_2,
    SUM(CASE WHEN task_command_value = 3 THEN 1 ELSE 0 END) AS count_3,
    SUM(CASE WHEN task_command_value = 4 THEN 1 ELSE 0 END) AS count_4,
    SUM(CASE WHEN task_command_value = 5 THEN 1 ELSE 0 END) AS count_5
FROM `数据库名`.表名
GROUP BY DATE_FORMAT(request_time,'%y-%m')
ORDER BY DATE_FORMAT(request_time,'%y-%m') DESC

输出结果:

二、分别统计各时间各类型数据总值

数据库的 date字段

数据类型:date

例子: 2024-04-09

原数据:

1、将数据按月汇总输出

SELECT
    DATE_FORMAT(date,'%y-%m') as date,
    SUM(everyday_1_bill) AS num1,
    SUM(everyday_2_bill) AS num2,
    SUM(everyday_3_bill) AS num3,
    Sum(everyday_4_bill) AS num4,
    SUM(everyday_5_count) AS num5,
    SUM(everyday_6_count) AS num6,
    SUM(everyday_7_count) AS num7,
    SUM(everyday_8_count) AS num8
FROM `数据库名`.数据库表名
GROUP BY DATE_FORMAT(date,'%y-%m')

输出结果:

2、将数据按周汇总输出(%U是周)

SELECT
    DATE_FORMAT(date,'%y-%m %U') as date,
    SUM(everyday_1_bill) AS num1,
    SUM(everyday_2_bill) AS num2,
    SUM(everyday_3_bill) AS num3,
    Sum(everyday_4_bill) AS num4,
    SUM(everyday_5_count) AS num5,
    SUM(everyday_6_count) AS num6,
    SUM(everyday_7_count) AS num7,
    SUM(everyday_8_count) AS num8
FROM `数据库名`.数据库表名
GROUP BY DATE_FORMAT(date,'%y-%m %U')

输出结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值