zoukankan      html  css  js  c++  java
  • MySql按周,按月,按日分组统计数据

    知识关键词:DATE_FORMAT,在service层循环判断,补齐

    1.  
      select DATE_FORMAT(create_time,'%Y') weeks,count(caseid) count from tc_case group by weeks;
    2.  
      select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case group by weeks;
    3.  
      select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count from tc_case group by days;
    4.  
      select DATE_FORMAT(create_time,'%Y%m') months,count(caseid) count from tc_case group by months;
       

    DATE_FORMAT(date,format)

    根据format字符串格式化date值。下列修饰符可以被用在format字符串中:

    %M 月名字(January……December)
    %W 星期名字(Sunday……Saturday)
    %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
    %Y 年, 数字, 4 位
    %y 年, 数字, 2 位
    %a 缩写的星期名字(Sun……Sat)
    %d 月份中的天数, 数字(00……31)
    %e 月份中的天数, 数字(0……31)
    %m 月, 数字(01……12)
    %c 月, 数字(1……12)
    %b 缩写的月份名字(Jan……Dec)
    %j 一年中的天数(001……366)
    %H 小时(00……23)
    %k 小时(0……23)
    %h 小时(01……12)
    %I 小时(01……12)
    %l 小时(1……12)
    %i 分钟, 数字(00……59)
    %r 时间,12 小时(hh:mm:ss [AP]M)
    %T 时间,24 小时(hh:mm:ss)
    %S 秒(00……59)
    %s 秒(00……59)
    %p AM或PM
    %w 一个星期中的天数(0=Sunday ……6=Saturday )
    %U 星期(0……52), 这里星期天是星期的第一天
    %u 星期(0……52), 这里星期一是星期的第一天
    %% 一个文字“%”。

    mysql统计一年12个月的数据,当某个月没数据的时候自动补0

    传值:

    select 
    ifnull(b.num,0),a.date
    from 
    (
    
    SELECT CONCAT(#{year},'-01') AS date UNION
    SELECT CONCAT(#{year},'-02') AS date UNION
    SELECT CONCAT(#{year},'-03') AS date UNION
    SELECT CONCAT(#{year},'-04') AS date UNION
    SELECT CONCAT(#{year},'-05') AS date UNION
    SELECT CONCAT(#{year},'-06') AS date UNION
    SELECT CONCAT(#{year},'-07') AS date UNION
    SELECT CONCAT(#{year},'-08') AS date UNION
    SELECT CONCAT(#{year},'-09') AS date UNION
    SELECT CONCAT(#{year},'-10') AS date UNION
    SELECT CONCAT(#{year},'-11') AS date UNION
    SELECT CONCAT(#{year},'-12') AS date
    
    )a
    
    left join
    
    (select count(*) num,DATE_FORMAT(createDate,'%Y-%m')as date from c_item group by date) b
    on a.date = b.date

    查询本年,一条数据

    select 
    sum(case month(createDate) when '1' then 1 else 0 end) as 一月份,
    sum(case month(createDate) when '2' then 1 else 0 end) as 二月份,
    sum(case month(createDate) when '3' then 1 else 0 end) as 三月份,
    sum(case month(createDate) when '4' then 1 else 0 end) as 四月份,
    sum(case month(createDate) when '5' then 1 else 0 end) as 五月份,
    sum(case month(createDate) when '6' then 1 else 0 end) as 六月份,
    sum(case month(createDate) when '7' then 1 else 0 end) as 七月份,
    sum(case month(createDate) when '8' then 1 else 0 end) as 八月份,
    sum(case month(createDate) when '9' then 1 else 0 end) as 九月份,
    sum(case month(createDate) when '10' then 1 else 0 end) as 十月份,
    sum(case month(createDate) when '11' then 1 else 0 end) as 十一月份,
    sum(case month(createDate) when '12' then 1 else 0 end) as 十二月份
    from c_item
    WHERE YEAR(createDate)=YEAR(NOW());
  • 相关阅读:
    STL中set底层实现方式? 为什么不用hash?
    main 主函数执行完毕后,是否可能会再执行一段代码?(转载)
    计算机网络(转载)
    2014! 的末尾有多少个0
    最常见的http错误
    内存分配(转载)
    delphi中指针操作符^的使用
    虚拟方法virtual的用法
    调用父类方法
    指针
  • 原文地址:https://www.cnblogs.com/dk2557/p/13917585.html
Copyright © 2011-2022 走看看