暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【sql】不同的时间字段进行汇总

删库跑路小分队 2021-09-03
649



Hi DaXiong



生活明朗,万物可爱❤️

人间值得,未来可期❤️




Hi ,April 23


北京连着吹了几天的超级大的风

今天的风终于不再那么大了,

但今天还是把我头发吹出了小啾啾,

跟天线宝宝一样可爱

难怪我感觉今天的信号这么好,哈哈哈



先养眼,再看题

❤️

今天是我阳哥的彩虹蛋糕




今天刷的题是按时间统计

这个需求还是很常见呀


主要是时间函数的使用




1

  Question



假设传过来的时间字段的值是

2020-02-02 02:02:02


我们需要分时间统计

统计

小时统计

10分钟统计

1分钟统计

.....





1

  Answer



一般我们的需求是按年,季,月,周进行汇总统计,这样的话,一般hive都是按照时间进行分区,可直接统计即可,但架不住总有一些奇奇怪怪的需求,在此会对每个sql进行一个讲解。


按天汇总


在这里,我们可以使用Date()方法

Date() ==> 传进去的是时间字典,返回的是YYYY-MM-DD

Datetime() ==> 同上,但返回的是

YYYY-MM-DD HH:MM:ss



    SELECT 
    DATE(TimeStart) AS date,
    COUNT(*) AS num
    FROM track
    WHERE Flag = 0 AND Duration >= 300 
    GROUP BY date
    ORDER BY date;







    按小时汇总




    这里的话,需要先将时间进行格式化,然后再单独提取出小时需要使用到DATE_FORMAT()

    DATE_FORMAT() ==> 以不同的格式显示日期/时间数据。



      SELECT 
      DATE_FORMAT(TimeStart, '%Y-%m-%d %H:00:00') AS time,
      COUNT(*) AS num
      FROM track
      WHERE Flag = 0 AND Duration >= 300
      GROUP BY time
      ORDER BY time;






      按10分钟汇总




      首先,我们要有思路,就是说将传进来的时间,将分钟做除法,然后获取到是10分钟还是20分钟还是30分钟,然后再进行统计汇总,这里需要用到这几个时间函数:


      hour():获取传进来时间的小时字段

      minute():获取传进来时间的分钟字段

      floor():四舍五入,向上取整数



        SELECT 
        time,
          COUNT( * ) AS num 
        FROM
        (
        SELECT Duration,
        DATE_FORMAT(
        concat( date( TimeStart ), ' ', HOUR ( TimeStart ), ':', floor( MINUTE ( TimeStart ) 10 ) * 10 ),
        '%Y-%m-%d %H:%i'
        ) AS time
        FROM tarck
        WHERE Flag = 0 AND Duration >= 300
        ) a
        GROUP BY DATE_FORMAT( time, '%Y-%m-%d %H:%i' )
        ORDER BY time;






        按1分钟汇总



        在对每分钟进行排序的时候,其实思路还是跟上面一样,通过时间函数获取到具体的分钟值,然后再汇总统计,具体的方法和通过小时进行汇总是一样的。



          SELECT DATE_FORMAT(TimeStart, '%Y-%m-%d %H:%i:00') AS time, COUNT(*) AS num
          FROM track
          WHERE Flag = 0 AND Duration >= 300
          GROUP BY time
          ORDER BY time;









          在此,根据时间进行汇总统计暂时告一段落。


          如果小伙伴还有其他的想法或问题也欢迎在评论区留言,让我们一起成长为大佬,赚大钱!




          扫码关注我

          郭大熊的公众号

          个人博客 : www.guodaxiong.com


          如果不曾见过阳光,我本可以忍受黑暗

           Hi GuoDaXiong 



          我是狗子

          祝你幸福


          文章转载自删库跑路小分队,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论