【问题标题】:Get multiple counts by 5 year increments以 5 年为增量获得多个计数
【发布时间】:2020-06-29 03:35:54
【问题描述】:

这是我的桌子:

   index_melanoma_yr    Total_Melanoma  Total_Virus
    2000                700              12
    2001                746              7
    2002                724              12
    2003                815              15
    2004                893              16
    2005                1020             22

我想以 5 年为增量进行计数。所以,2000-2004、2005-2009 等。我可以硬编码,但既然有这么多年,我想知道是否有更有效的方法。

这是我得到初始计数的方法:

    SELECT index_melanoma_yr,
           COUNT(DISTINCT PersonID) AS Total_Melanoma,
           SUM(   CASE
              WHEN index_virus_yr IS NOT NULL THEN
                  1
              ELSE
                  0
          END
              ) AS Total_Virus
    FROM Asare_ViralMelanoma_IndexDates
    GROUP BY index_melanoma_yr
    ORDER BY index_melanoma_yr 

【问题讨论】:

  • 总是2010-2014,你会有2011-2015这样的情况吗?

标签: sql sql-server


【解决方案1】:

您可以在年份列上执行一些简单的数学运算 year / 5 * 5,然后 GROUP BY 那。假设year 列是整数

SELECT  MIN(index_melanoma_yr) AS Year_Start,
        MAX(index_melanoma_yr) AS Year_End,
           COUNT(DISTINCT PersonID) AS Total_Melanoma,
           SUM(   CASE
              WHEN index_virus_yr IS NOT NULL THEN
                  1
              ELSE
                  0
          END
              ) AS Total_Virus
FROM Asare_ViralMelanoma_IndexDates
GROUP BY index_melanoma_yr / 5 * 5
ORDER BY Year_Start 

【讨论】:

    猜你喜欢
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    相关资源
    最近更新 更多