SqlServer-COMPUTE BY
COMPUTE BY子句可以通過同一個select語句即查看明細行,又查看匯總行.可以計算子組的匯總值,也可以計算整個結果集的匯總值
COMPUTE 子句需要以下信息:
1. 可選的By關鍵字可按對一列計算指定的行聚合
2. 行聚合函數:sum,avg,min,max,count
3. 要對其執行行聚合函數的列
COMPUTE 所生成的匯總值在查詢結果中顯示為分離的結果集,包括COMPUTE子句的查詢的結果類似于控制中斷報表,即匯總值由指定的組控制的報表.可以為各組生成匯總值,也可以對同一組計算多個聚合函數.
當COMPUTE帶有可選的By子句時,符合select條件的每個組都有兩個結果集:
1. 每個組的第一個結果集是明細行集,其中包含該組的選擇列表信息
2. 每個組的第二個結果集有一行,其中包含該組COMPUTE子句中所指定的聚合函數的小記
示例:
Sql:
select sex,sclass,score
from student
order by sex
compute sum(score) by sex
注意:order by是必須的,并且 compute by后的參數應該在order by后的參數中出現過
當COMPUTE不帶有可選的By子句時,Select有兩個結果集:
1. 每個組的第一個結果集是包含選擇列表的所有明細行的信息
2. 第二個結果集有一行,其中包含COMPUTE子句中所指定的聚合函數的合計
例如:
Sql:
select sex,sclass,score
from student
compute sum(score)
比較compute 和 group by ,區別如下:
1. group by生成單個結果集,每個組都有一個只包含分組依據列和顯示該組子聚合的聚合函數的行,選擇列表只能包含分組依據列和聚合函數.
2. COMPUTE生成多個結果集,一類結果集包含每個組的明細行,其中包含選擇列表中的表達式,另一類結果集包含組的子聚合.
3. 選擇列表可包含分組依據列或聚合函數之外的其他表達式;聚合函數在compute 子句中指定,而不是出現在選擇列表中.
轉載于:https://www.cnblogs.com/oneword/archive/2009/04/28/1445203.html
總結
以上是生活随笔為你收集整理的SqlServer-COMPUTE BY的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]要有梦----送给自己,希望自己能
- 下一篇: SQL 技巧-ORACLE