2016-07-05 2 views
1

신경과 전문의에 대한 의학적 데이터를 얻기 위해 보고서를 가져와야합니다. 다음 쿼리는 합계 및 평균을 월별로 가져옵니다. 일주일에 총계와 평균을 가져 오려면 어떻게 변경합니까?주별 합계를 얻으려는 SQL 쿼리

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); 

답변

3

단순히으로 DATENAME 기능도 그룹에 WEEK 대신 MONTH를 사용합니다.

또한

쿼리의 훨씬 더 읽을 수있는 형식은 ... 같은 것

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)); 
관련 문제