聚集函數
聚集函數會採用一組值 (例如資料直欄) ,並從該組值傳回單一值結果。
下列資訊適用於 COUNT (*) 和 COUNT_BIG (*) 以外的所有聚集函數。
- 聚集函數的引數是從表示式衍生的一組值。 表示式可能包含直欄,但無法包含另一個聚集函數。 集合的範圍是群組或中間結果表格,如第 6 章「查詢」中所說明。
- 如果在查詢中指定 GROUP BY 子句,且 FROM、WHERE、GROUP BY 及 HAVING 子句的中間結果是 空結果表格,則不會套用聚集函數,且查詢的結果是 空表格。
- 如果未在查詢中指定 GROUP BY 子句,且 FROM、WHERE 及 HAVING 子句的中間結果是 空結果表格,則會將聚集函數套用至 空結果表格。 例如,下列 SELECT 陳述式的結果會套用至 空結果表格 ,因為部門 D01 沒有員工:
SELECT COUNT(DISTINCT JOB) FROM EMPLOYEE WHERE WORKDEPT = 'D01' - 關鍵字 DISTINCT 不被視為函數的引數,而是在套用函數之前執行之作業的規格。 如果指定 DISTINCT ,則會刪除冗餘重複值。 如果隱含或明確指定 ALL ,則不會刪除冗餘重複值。
解譯數值相等之小數浮點數值的 DISTINCT 子句時,不會考量值中的有效位數數目。 例如,小數浮點數字 123.00 與小數浮點數字 123 不同。 從查詢傳回的數字表示法將是所發現的任何一種表示法 (例如, 123.00 或 123)。
- 只有在 WHERE 子句是 HAVING 子句子查詢的一部分,且表示式中指定的直欄名稱是群組的相關參照時,才能在 WHERE 子句中使用聚集函數。 如果表示式包含多個直欄名稱,則每一個直欄名稱都必須是與相同群組相關的參照。