有没有一种方法可以编写SQL查询来计算给定年份(2000-2010)中每个季节的季节(例如冬天)的顺序?

问题描述 投票:0回答:1

显然,您可以进行常规查询,例如-

SELECT AVG(COUNT (ordernum))
FROM orders
WHERE DATES BETWEEN '2011/02/25' and '2011/02/27' AS 'Winter Season'
GROUP BY ordernum

,也许还有一个CASE语句来命名您的季节。但理想情况下,我想要的是以下内容:

enter image description here

逻辑:

  • 春天是三月至六月
  • 夏天是六月至九月
  • 9月至12月的秋季
  • 冬季是十二月-三月
sql sql-server logic
1个回答
0
投票

您似乎想要case表达式*作为group by键。我怀疑是这样的:

SELECT YEAR(date),
       (CASE WHEN MONTH(date) IN (1, 2, 3) THEN 'WINTER'
             WHEN MONTH(date) IN (4, 5, 6) THEN 'SPRING'
             WHEN MONTH(date) IN (7, 8, 9) THEN 'SUMMER'
             WHEN MONTH(date) IN (10, 11, 12) THEN 'AUTUMN'
        END) as season, COUNT(*)
FROM orders
GROUP BY  YEAR(date),
          (CASE WHEN MONTH(date) IN (1, 2, 3) THEN 'WINTER'
                WHEN MONTH(date) IN (4, 5, 6) THEN 'SPRING'
                WHEN MONTH(date) IN (7, 8, 9) THEN 'SUMMER'
                WHEN MONTH(date) IN (10, 11, 12) THEN 'AUTUMN'
           END);
© www.soinside.com 2019 - 2024. All rights reserved.