【问题标题】:How to fix group by and order by year and months in sql?如何在sql中按年和月修复分组和排序?
【发布时间】:2021-02-23 15:29:00
【问题描述】:

我正在尝试按年和月格式修复顺序和分组。这是我的sql查询

SELECT DATE_FORMAT(created_at, "%Y %b") ym 
FROM `book_summaries` 
GROUP BY DATE_FORMAT(created_at, "%Y %b") 
ORDER BY DATE_FORMAT(created_at, "%Y %b")

但是sql查询结果是这样的:

2018 Apr
2018 Aug
2018 Dec
2018 Feb
2018 Jul
2018 Jun
2018 Mar
2018 May
2018 Nov
2018 Oct
2018 Sep
2019 Apr
2019 Aug
2019 Dec

似乎只订购了年份格式,但没有订购其中的月份。如何将查询更改为按year 和months 排序?

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 看起来 DATE_FORMAT 返回字符值,因为您的结果是按字母顺序排列的。

标签: mysql sql group-by sql-order-by


【解决方案1】:

您可以order by每个范围内的最小日期:

SELECT DATE_FORMAT(created_at, '%Y %b') ym 
FROM `book_summaries` 
GROUP BY DATE_FORMAT(created_at, '%Y %b') 
ORDER BY MIN(created_at);

请注意,我还用单引号替换了双引号。单引号是字符串的 SQL 标准(尽管有些数据库确实支持双引号作为字符串分隔符)。

【讨论】:

    猜你喜欢
    • 2011-07-21
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    相关资源
    最近更新 更多