zoukankan      html  css  js  c++  java
  • Mysql 分别按月, 日为组group,进行统计排序order

    在数据库中我们经经常使用sql语句对表进行简单的统计排序,对于日期字段。我们能够简单的对其进行order。

    对于复杂一点的能够按日期中的年。月,日分别进行group,order。


    按年份进行group,统计排序:

    SELECT YERA(established_time)  ,COUNT(*) AS num <span style="font-size: 13.75px; font-family: Arial, Helvetica, sans-serif;">FROM `table_record` GROUP BY YEAR (established_time)</span>


    按月份进行group。统计排序:

    方法一:简单有用

    SELECT YEAR(established_time) AS 'year' , MONTH(established_time) AS 'month' , COUNT(*) AS 'count' 
    FROM `table_record` 
    GROUP BY YEAR (established_time) DESC, MONTH(established_time)

    效果:

     year   month   count
    ------  ------  ------- 
    2014       1      8320  
    2014       2      5837  
    2014       3     25069  
    2014       4     29820  
    2014       5     25060 
    2014       6     17615  
    2014       7         1  
    2013       1      9114  
    2013       2      4258

    方法二:利用 MySql内置字符串连接函数 CONCAT(str1, str2, ...,str3) 。

    SELECT  CONCAT(YEAR(established_time),',',MONTH( established_time)) AS data_time ,COUNT(*) AS num 
    FROM `table_record` 
    #group by data_time
    GROUP BY YEAR(established_time) DESC,MONTH( established_time)
    效果:

    data_time     num   
    ---------  -------- 
    2014,1         8320 
    2014,2         5837 
    2014,3        25069
    2014,4        29910
    2014,5        25018
    2014,6        17347
    2014,7            1   
    2013,1         9114
    2013,2         4258
    2013,3         8047


    注意这里不要用:

    SELECT  YEAR(established_time)+MONTH( established_time) as data_time 

    这是错误的,它会造成2010+1=2011的这种错误。

    此外,若只用以下语句,是统计的是多年来每月的数据。

    SELECT  MONTH(established_time) AS 'month' , COUNT(*) AS 'count' 
    FROM `tb_gongshangju_record_beijing` GROUP BY  MONTH(established_time) DESC
    

    效果例如以下:

     month   count  
    ------  --------
        12     44952
        11     49720
        10     38587
         9     48967
         8     52874
         7     54082
         6     69532
         5     76999
         4     87289
         3     85249
         2     39997
         1     49017
    (NULL)     34456



    按日期day进行group,统计排序


     
    SELECT YEAR(established_time) AS 'year' , MONTH(established_time) AS 'month' ,DAY(established_time) AS 'day', COUNT(*) AS 'count' 
    FROM `table_record` 
    WHERE table_record.`established_time` >= '2014-01-01'
    GROUP BY YEAR (established_time) DESC, MONTH(established_time) DESC ,DAY(established_time) DESC


  • 相关阅读:
    【力扣】767. 重构字符串
    【力扣】976. 三角形的最大周长
    【力扣】164. 最大间距
    【力扣】454. 四数相加 II
    JS中,输出1-10之间的随机整数
    web移动端浮层滚动阻止window窗体滚动JS/CSS处理
    禁止网站F12和查看源码
    苹果浏览器移动端click事件延迟300ms的原因以及解决办法
    jQuery下锚点的平滑跳转
    js实现placehoider效果
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5243150.html
Copyright © 2011-2022 走看看