Mysql 按日期将行分组为 4 个季节 + 年

标签 mysql

目前我将新闻分组为月+年,但我们没有足够的新闻文章。因此,我想按季节对它们进行分组:夏季、 Spring 、秋季或冬季 + 年份

所以代替:

  • 2013 年 1 月
  • 2013 年 3 月
  • 2013 年 4 月

它会是:

  • 2013 年夏季
  • 2013 年 Spring

每月归档

SELECT MONTHNAME(news_date) AS MONTH,
       YEAR(news_date) AS YEAR,
       COUNT(news_id) AS COUNT
FROM news
WHERE news_type = 'NEWS'
  AND news_status = 'ENABLED'
GROUP BY CONCAT(MONTH(news_date), ' ', YEAR(news_date))
ORDER BY news_date DESC

最佳答案

SELECT CASE WHEN MONTH(news_date) IN (12, 1, 2) THEN 'Winter'
            WHEN MONTH(news_date) IN (3, 4, 5) THEN 'Spring'
            WHEN MONTH(news_date) IN (6, 7, 8) THEN 'Summer'
       ELSE 'Fall' END AS Season,
       YEAR(news_date) AS YEAR,
       COUNT(news_id) AS COUNT
FROM news
WHERE news_type = 'NEWS'
  AND news_status = 'ENABLED'
GROUP BY YEAR(news_date), Season
ORDER BY news_date DESC

关于Mysql 按日期将行分组为 4 个季节 + 年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19680176/

相关文章:

mysql - '' 中的未知列 'where clause'

mysql - 从选择创建转储文件

mysql - Mysql 中的 Unix 时间日期

mysql - 使用 SQL 连接 3 个以上的表显示太多结果

mysql - 如何在 MySQL 中选择 ID 最高的行?

mysql - 从不同的表中选择字段

java - Hibernate不会创建表,即使它在sql中显示

mysql - 需要删除MySQL中从一个单词到末尾的部分字符串

php - Laravel Scheme Builder 正在向所有整数字段添加 auto_increment,这使其失败

php - 检查并排除 FOR 循环 PHP 中的 $value 是否为其中一行