1

現時点では、ニュースを月+年にグループ化していますが、十分なニュース記事がありません. 代わりに、季節ごとにグループ化したいと思います: 夏、春、秋、または冬 + 年

したがって、代わりに:

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

それはそのようになります:

  • 2013年夏
  • 2013年春

月次アーカイブ

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
4

4 に答える 4

3

数値の季節 (冬は 0 から秋は 3) を取得するには、よりコンパクトな方法を試してください。

SELECT quantity, FLOOR((MONTH(date_field) % 12)/3) as season
FROM `tbl`
GROUP BY season
于 2014-07-20T12:05:20.257 に答える
2
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
于 2013-10-30T10:56:01.980 に答える
1
SELECT case when MONTH(news_date) between 3 and 5 then 'Spring',
            when MONTH(news_date) between 6 and 8 then 'Summer',
            when MONTH(news_date) between 9 and 11 then 'Autum',
            when MONTH(news_date) >= 12 and MONTH(news_date) <= 2 then 'Winter'
       end AS Period,
       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), Period
ORDER BY news_date DESC
于 2013-10-30T10:56:53.393 に答える
0

クエリで以下のような CASE ステートメントを使用します

CASE WHEN MONTH(news_date) = 1 or MONTH(news_date) = 2 or MONTH(news_date) = 3 
     THEN CONCAT('SPRING ' , YEAR(news_date) ) 
     WHEN MONTH(news_date) = 4 or MONTH(news_date) = 5 or MONTH(news_date) = 6 
     THEN CONCAT('SUMMER ' , YEAR(news_date) ) 
     WHEN MONTH(news_date) = 7 or MONTH(news_date) = 8 or MONTH(news_date) = 9 
     THEN CONCAT('AUTUMN ' , YEAR(news_date) ) 
     WHEN MONTH(news_date) = 10 or MONTH(news_date) = 11 or MONTH(news_date) = 12 
     THEN CONCAT('WINTER ' , YEAR(news_date) ) 
于 2013-10-30T10:56:10.240 に答える