mysql 按月排序_Mysql 分别按月, 日为组group,进行统计排序order

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

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

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

SELECT YERA(established_time) ,COUNT(*) AS num FROM `table_record` GROUP BY YEAR (established_time)

按月份进行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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,可以通过在GROUP_CONCAT函数中使用ORDER BY子句来对结果进行排序。例如,使用以下语法可以对group_concat()函数的结果进行排序GROUP_CONCAT(字段名 ORDER BY 排序字段 ASC/DESC SEPARATOR 分隔符)。其中,字段名是要进行排序的字段,排序字段可以是任何可以进行排序的字段,ASC代表升序,DESC代表降序,分隔符用于分隔合并后的结果。 举个例子,如果要对一个名为id的字段进行降序排序,并使用下划线作为分隔符,可以使用以下语句:GROUP_CONCAT(id ORDER BY id DESC SEPARATOR '_')。这将返回按id降序排列并用下划线分隔的结果。 需要注意的是,排序字段的位置必须在ORDER BY子句之前,并且只能对单个字段进行排序。如果需要对多个字段进行排序,则可以使用多个GROUP_CONCAT函数进行合。 总结一下,可以使用group_concat()函数的ORDER BY子句来对结果进行排序,按照指定字段和排序方式进行排序,并使用指定的分隔符分隔合并后的结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [浅谈MySQLgroup_concat()函数的排序方法](https://download.csdn.net/download/weixin_38623272/12828606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySQL GROUP_CONCAT()函数的排序方法](https://blog.csdn.net/william_n/article/details/97891833)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值