1. 程式人生 > >SUM()和COUNT()聚合函式

SUM()和COUNT()聚合函式

當我們需要在一條Sql語句中進行不同條件的統計時,單獨的COUNT()無法滿足我們的需求,這時可以通過SUM()來完成。

SELECT
    CourseID,
    TotalCount=COUNT(*),
    UnreadCount=SUM(CASE WHEN ReadStatus=0 THEN 1 ELSE 0 END)
FROM CourseComments GROUP BY CourseID

COUNT() 函式返回匹配指定條件的行數。

SUM 函式返回數值列的總數(總額)。

在SUM中的CASE可以理解為先為查詢到的結果集增加了外部行ReadCount,滿足條件的計數1,不滿足條件計數0,然後再用SUM函式求和得到統計的總數。例:

SELECT 
    CourseID,
    TotalCount=COUNT(*),
    UnreadCount=SUM(ReadCount)
FROM (SELECT CourseID, ReadCount=(CASE WHEN ReadStatus=0 THEN 1 ELSE 0 END) FROM CourseComments) A GROUP BY A.CourseID