繁体   English   中英

按年份分组 SQL 查询

[英]Group by year range SQL query

我有以下查询。 我需要将 MODEL_YEAR_FW 2003 到 2022 分组为 3 年

SELECT
COUNT(VEHICLE_FW.MODEL_YEAR_FW) AS COUNT_VEHICLES,
VEHICLES_FW.MODEL_YEAR_FW AS MODEL_YR
FROM
FWUSER.VEHICLES_FW
WHERE
VEHICLES_FW.ARCHIVE_STATUS_FW - 'N'
AND ( (MODEL_YEAR_FW) >2003)
GROUP BY
VEHICLE_FW.MODEL_YEAR_FW
ORDER BY
VEHICLES_FW.MODEL_YEAR_FW

有人请帮助我

您可以使用模运算符%

SELECT VEHICLE_FW.MODEL_YEAR_FW % 3 AS interval3y, 
       count(*) AS COUNT_VEHICLES,
       min(VEHICLES_FW.MODEL_YEAR_FW) AS MODEL_YR
FROM FWUSER.VEHICLES_FW
WHERE VEHICLES_FW.ARCHIVE_STATUS_FW = 'N'
  AND MODEL_YEAR_FW >= 2003
GROUP BY interval3y
ORDER BY interval3y

您可以使用DENSE_RANK()分析 function 如下:

WITH RANKS AS
(
  SELECT MODEL_YEAR_FW, ARCHIVE_STATUS_FW,
         CEILING(DENSE_RANK() OVER (ORDER BY MODEL_YEAR_FW)/3) GRP
  FROM VEHICLES_FW
  WHERE ARCHIVE_STATUS_FW = 'N'AND MODEL_YEAR_FW >2003
)
SELECT CONCAT(MIN(MODEL_YEAR_FW), '-', MAX(MODEL_YEAR_FW)) AS MODEL_YR,
       COUNT(MODEL_YEAR_FW) AS COUNT_VEHICLES
FROM RANKS
GROUP BY GRP
ORDER BY GRP

查看演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM