mysql不同时间粒度下的分组统计

mysql不同时间粒度下的分组统计

1、测试表数据如下: 

        

 

2、MySQL按天分组数据

         DATE() 函数返回日期或日期/时间表达式的日期部分。如下所示:

        

         可以如下Sql展示:

SELECT DATE(time) AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;
    结果如下所示:

        

 

 

 3、按分钟分组如下所示:

  DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。

       date 参数是合法的日期。format 规定日期/时间的输出格式。

       注:完整的年月日时分秒格式如:%Y-%m-%d %H:%i:%s

       测试输出当前时间如下:

      

       Sql语句可以如下书写:

SELECT DATE_FORMAT(time, '%Y-%m-%d %H') AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;
    输出结果如下:

        

 

         因为DATE_FORMAT是格式化函数,所以也可以这样写

SELECT DATE_FORMAT(time, '%Y-%m-%d %H:00:00') AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;
     输出结果如下:

         

 

 4、分别以年、月、分、秒分组

SELECT DATE_FORMAT(time, '%Y') AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;
月:
SELECT DATE_FORMAT(time, '%Y-%m') AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;

分:

SELECT DATE_FORMAT(time, '%Y-%m-%d %H:%i') AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;

秒:

SELECT DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;

5、带计算类的时间统计

需要用到下列方法,依次为年、月、日、时、分、秒、星期

 

select year(NOW());
select MONTH(NOW());
select DAY(NOW());
select HOUR(NOW());
select MINUTE(NOW());
select SECOND(NOW());
select WEEK(NOW());

 

5.1 按半小时分组统计

        Sql如下:

SELECT DATE_FORMAT(
            concat( date( time ), ' ', HOUR ( time ), ':', floor( MINUTE ( time ) / 30 ) * 30 ),
            '%Y-%m-%d %H:%i' 
        ) AS date ,count(*) 
FROM group_time_test  GROUP BY date ;
    结果如下:

        

 

未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值