group by 語句支持基本的having條件,還支持rollup和cube提供信息匯總功能,類似小計。 rollup:縱向小計,從右向左逐個對每一列進行小結并在結果中生成獨立的一行。只返回第一個分組條件指定的列的統計行。 cube:橫行小計 selectd.deptno,t.job,sum(t.sal)
group by 語句支持基本的having條件,還支持rollup和cube提供信息匯總功能,類似小計。
rollup:縱向小計,從右向左逐個對每一列進行小結并在結果中生成獨立的一行。只返回第一個分組條件指定的列的統計行。
cube:橫行小計
執行結果:
***
使用grouping_id顯示指定的分組級別的記錄。返回grouping()位向量的十進制值,GROUPING位向量的計算方法是將按照順序對每一列調用GROUPING函數的結果組合起來。
例:grouping_id(a,b,c),a為空就是0非空為1,b和c也一樣,結果會得到一個三位數,用二進制轉換成十進制就是了,a,b,c全是非空,即111就是7,三列就是7,如果是兩列自然是11就是3
select ... from 表 group by rollup(.....) having grouping_id(....)<=1
rollup(x,y)2列 | rollup(x,y,z)3列 |
總計是grouping_id=3 | 總計是grouping_id=7 |
小計grouping_id=1 | 小計grouping_id=3 |
記錄是grouping_id=0 | 記錄是grouping_id=0 |
此時要求不顯示最后總計行:
執行結果:
實際情況中要展示結果集中匯總列加上小計和合計,此時這樣處理:
執行結果:
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com