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