zoukankan      html  css  js  c++  java
  • sql group by hour 按小时分组统计

    Time字段以小时分组统计

    select datepart(hour,time) hour,count(1) count from table
    where
    Similarity<75
    group by datepart(hour,time)
    order by count desc

    From:https://www.cnblogs.com/xuejianxiyang/p/11202931.html

    5分钟,半个小时,任意间隔分组分组

    开发中遇到过问题就是对时间以半个小时分钟分组,如统计08:00-08:30的人数,08:30-09:00的人数,貌似sql中没有这样的函数吧,直接从数据库里查出来,在java里分组也太low了吧
    想到方法1 自定义函数,自己实现时间的半个小时转换,统计时调用函数
    CREATE FUNCTION `date_half_hour_format`(in_date TIMESTAMP) RETURNS TIMESTAMP
    BEGIN
    DECLARE out_date TIMESTAMP;
    DECLARE s_date VARCHAR(255);
    DECLARE s_minute VARCHAR(2);
    DECLARE int_minute INT;

    SET s_minute = SUBSTRING(in_date, 15, 2);
    SET int_minute = CAST(s_minute AS SIGNED);

    IF int_minute <= 29 THEN
    SET int_minute = 0;
    SET s_date = CONCAT(LEFT(in_date, 14),'0',int_minute);
    ELSE
    SET int_minute = 30;
    SET s_date = CONCAT(LEFT(in_date, 14),int_minute);
    END IF;

    SET out_date = STR_TO_DATE(s_date,'%Y-%m-%d %H:%i');

    RETURN out_date;
    END


    方法2 学过c语言更清楚c语言创建时间都是一个long的时间戳,可以对时间做除法运算,就是时间long的值除以30*60,这样就能得出半个小时的时间了,mysql中有函数unix_timestamp获取long的时间,从long转date的form_unixtime
    SELECT FROM_UNIXTIME((UNIX_TIMESTAMP(CURRENT_TIMESTAMP) DIV 1800)*1800)


    这样就可以按任意时间分组了 

    https://blog.csdn.net/Hendiaome/article/details/72457506

  • 相关阅读:
    Math类操作数据
    java之静态方法与非静态方法
    使用Date和SimpleDateFormat类表示时间
    Java 中基本类型和字符串之间的转换
    Python基础
    生成对抗网络
    机器翻译
    语义角色标注
    个性化推荐
    词向量
  • 原文地址:https://www.cnblogs.com/xuejianxiyang/p/11202931.html
Copyright © 2011-2022 走看看