简体   繁体   English

SQL查询按周获取总计

[英]SQL Query to get Totals By Week

I need to pull a report to get some medical data for a neurologist. 我需要提交报告以获取神经科医生的一些医疗数据。 The following query pulls totals and averages by month. 以下查询按月汇总总计和平均值。 How can I change it to pull totals and averages by week? 如何将其更改为按周拉取总计和平均值?

SELECT
  [Month] = DATENAME(MONTH, DATEADD(MONTH, MONTH(HeadacheDate), -1)),
  [Total] = COUNT(CASE
    WHEN Severity > 0 THEN 1
  END),
  [Light] = COUNT(CASE
    WHEN Severity > 0 AND
      Severity < 4 THEN 1
  END),
  [Moderate] = COUNT(CASE
    WHEN Severity > 3 AND
      Severity < 7 THEN 1
  END),
  [Severe] = COUNT(CASE
    WHEN Severity > 6 THEN 1
  END),
  [DHE or ER] = COUNT(CASE
    WHEN Medication LIKE '%dhe%' THEN 1
  END)
FROM HeadacheData
WHERE YEAR(HeadacheDate) = 2016
GROUP BY MONTH(HeadacheDate);

Simply use WEEK instead of MONTH in the DATENAME function and also group by it. 只需在DATENAME功能中使用WEEK而不是MONTH ,并按其分组。

Also a much more readable format of the query would be something like... 另外一种更易读的查询格式就像......

SELECT
   [Week]      = DATENAME(WEEK, DATEADD(MONTH, MONTH(HeadacheDate), -1))
  ,[Total]     = COUNT(CASE WHEN Severity > 0 THEN 1 END)
  ,[Light]     = COUNT(CASE WHEN Severity > 0 AND Severity < 4 THEN 1 END)
  ,[Moderate]  = COUNT(CASE WHEN Severity > 3 AND Severity < 7 THEN 1 END)
  ,[Severe]    = COUNT(CASE WHEN Severity > 6 THEN 1 END)
  ,[DHE or ER] = COUNT(CASE WHEN Medication LIKE '%dhe%' THEN 1 END)
FROM HeadacheData
WHERE YEAR(HeadacheDate) = 2016
GROUP BY DATENAME(WEEK, DATEADD(MONTH, MONTH(HeadacheDate), -1));

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

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