【问题标题】:SQL count ocurrences within time periods时间段内的 SQL 计数出现次数
【发布时间】:2015-04-27 06:06:03
【问题描述】:

我最近在工作(医院)的一个项目中开始使用 Access 数据库,并从该站点获得了许多有用的提示。但是,我现在有一个问题,我不知道如何解决。

我有一张表格,其中包含许多患者的治疗日期(以及其他数据)。我的任务是计算每周(也可能是月/季度/年)内给予的治疗次数。治疗日期位于“数据”表的“治疗日期”列中。

我使用DatePart 将年份和周数分开为:

SELECT 
    DatePart('yyyy',[TreatStart]) AS Year, DatePart('ww',[TreatStart]) AS Week 
FROM Data 
ORDER BY DatePart('yyyy',[TreatStart]),DatePart('ww',[TreatStart]);

这给了我:

    Year   Week
    2006   16
    2006   16
    2006   16
    2006   17
    2006   17
    2006   18
    2006   19
    2006   19
    2006   19
    ...    ...

我如何计算每周出现的次数以获得如下信息:

    Year  Week  N
    2006  16    3
    2006  17    2
    2006  18    1
    2006  19    3
    ...   ...   ...

最好的问候, 马蒂亚斯

【问题讨论】:

    标签: sql ms-access count


    【解决方案1】:

    只需将group by 添加到您希望计数的相同值上,然后添加count 聚合函数即可获取该给定组的约会总数。

    SELECT DatePart('yyyy',[TreatStart]) AS Year, DatePart('ww',[TreatStart]) AS Week , COUNT(*) As N
    FROM Data 
    GROUP BY DatePart('yyyy',[TreatStart]),DatePart('ww',[TreatStart])
    ORDER BY DatePart('yyyy',[TreatStart]),DatePart('ww',[TreatStart]);
    

    【讨论】:

      【解决方案2】:

      使用GROUP BYCOUNT

      SELECT DatePart('yyyy',[TreatStart]) AS Year, 
             DatePart('ww',[TreatStart]) AS Week, 
             COUNT(*) as N
      FROM Data 
      GROUP BY DatePart('yyyy',[TreatStart]),DatePart('ww',[TreatStart])
      ORDER BY DatePart('yyyy',[TreatStart]),DatePart('ww',[TreatStart]);
      

      输出将是:

      Year  Week  N
      2006  16    3
      2006  17    2
      2006  18    1
      2006  19    3
      

      【讨论】:

      • 完美!非常感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      相关资源
      最近更新 更多