SQL 计算时间段内的出现次数

SQL count ocurrences within time periods

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

我有一个 table 包含许多患者的治疗日期(以及其他数据)。我的任务是统计每周的治疗次数(也可能 month/quarter/year)。治疗日期位于 table 'Data' 中的 'TreatDate' 列。

我使用 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
    ...   ...   ...

此致, 马蒂亚斯

只需将 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]);

使用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