group by 語(yǔ)句支持基本的having條件,還支持rollup和cube提供信息匯總功能,類似小計(jì)。 rollup:縱向小計(jì),從右向左逐個(gè)對(duì)每一列進(jìn)行小結(jié)并在結(jié)果中生成獨(dú)立的一行。只返回第一個(gè)分組條件指定的列的統(tǒng)計(jì)行。 cube:橫行小計(jì) selectd.deptno,t.job,sum(t.sal)
group by 語(yǔ)句支持基本的having條件,還支持rollup和cube提供信息匯總功能,類似小計(jì)。
rollup:縱向小計(jì),從右向左逐個(gè)對(duì)每一列進(jìn)行小結(jié)并在結(jié)果中生成獨(dú)立的一行。只返回第一個(gè)分組條件指定的列的統(tǒng)計(jì)行。
cube:橫行小計(jì)
執(zhí)行結(jié)果:
***
使用grouping_id顯示指定的分組級(jí)別的記錄。返回grouping()位向量的十進(jìn)制值,GROUPING位向量的計(jì)算方法是將按照順序?qū)γ恳涣姓{(diào)用GROUPING函數(shù)的結(jié)果組合起來(lái)。
例:grouping_id(a,b,c),a為空就是0非空為1,b和c也一樣,結(jié)果會(huì)得到一個(gè)三位數(shù),用二進(jìn)制轉(zhuǎn)換成十進(jìn)制就是了,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列 |
總計(jì)是grouping_id=3 | 總計(jì)是grouping_id=7 |
小計(jì)grouping_id=1 | 小計(jì)grouping_id=3 |
記錄是grouping_id=0 | 記錄是grouping_id=0 |
此時(shí)要求不顯示最后總計(jì)行:
執(zhí)行結(jié)果:
實(shí)際情況中要展示結(jié)果集中匯總列加上小計(jì)和合計(jì),此時(shí)這樣處理:
執(zhí)行結(jié)果:
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com