SUM()和COUNT()聚合函數

當咱們須要在一條Sql語句中進行不一樣條件的統計時,單獨的COUNT()沒法知足咱們的需求,這時能夠經過SUM()來完成。sql

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

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

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

在SUM中的CASE能夠理解爲先爲查詢到的結果集增長了外部行ReadCount,知足條件的計數1,不知足條件計數0,而後再用SUM函數求和獲得統計的總數。例:class

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