SQL计数在时间段内发生

时间:2015-02-25 09:47:05

标签: sql ms-access count

我最近开始在我的工作(医院)的项目中使用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
    ...   ...   ...

祝你好运, 马蒂亚斯

2 个答案:

答案 0 :(得分: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]);

答案 1 :(得分: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