第四章

使用聚合函數分析數據

•Aggregate是一個函數執行一個簡單的計算,一列數據,並返回結果集的結果

•select aggregate_name ( [ distinct ] column_name) from table_name [ where condition]

•distinct應用Aggregate前刪除重複值

•distinct 可以和 count、sum和avg一起使用

•distinct 不可以和 count(*), max, min

•Aggregates不可以和where混用

•錯誤範例:select title from titles where advance > avg(advance)

•除COUNT(*),所有聚集忽略NULL值

•select aggregate ( isnull ( column_with_NULLs, non-NULL value ) from table_name

•snull是一個T-SQL的擴展,取代指定的非NULL值的結果集返回NULL值

–此功能表中的NULL值不會受到影響

•一般Aggregate是用在group by

•select column_list from table group by column_list

•應用順序

–首先使用 [ where ] 篩選掉不符合的資料

–然後剩餘的資料進行分組

–最後,應用Aggregate

•Group by之後,還需要條件判斷的情況下使用having

–這種過濾發生後已應用於Aggregate

•select column_list from table group by column_list having condition

grouping by

•grouping by可以通過列名或任何不包含聚合函數的表達

•grouping by不能被派生列標題

•grouping by 的條件通常包含在select表達

compute

•compute子句是一個T-SQL的擴展,提供一個單一的數字,在報告結束

•select column_list from table_name where condition group by column_list having condition [ order by column_name [ asc | desc ] [ , column_name [ asc | desc ] … ] ] compute aggregate ( column_name )

compute by

•compute by 子句是一個T-SQL的擴展,提供了一個單一數字,每個組值

•select column_list from table_name order by column_name [ asc | desc ] [ , column_name [ asc | desc ] … ] compute aggregate ( column_name ) by column_list

•Compute by 一定要使用 order by

•Compute 不一定要使用 order by

•例

–Order by a, b, c

•Compute avg(price) a, b, c

•Compute avg(price) a, b

•Compute avg(price) a