日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

oracle利用sql語(yǔ)句實(shí)現(xiàn)分組小計(jì)(grouping,group by ,rollup)

作者:code_std 更新時(shí)間: 2022-08-13 編程語(yǔ)言

今天遇到一個(gè)需求,要做一個(gè)報(bào)表,格式如下:
在這里插入圖片描述
原本想直接查詢(xún)出來(lái),然后用程序把數(shù)據(jù)整理一下展示,然后想到了oracle查詢(xún)語(yǔ)句的grouping,如果直接查出來(lái)就是這樣的,之后在對(duì)數(shù)據(jù)加工后展示就更簡(jiǎn)單了。于是有了下面的簡(jiǎn)單測(cè)試:

創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)

在這里插入圖片描述

利用rollup 分組

如下圖,group by rollup(a,b) 和 group by (a,b) 分組出來(lái)的結(jié)果,明顯不同。
group by rollup(a,b) 分組實(shí)際就是先將 shi1 進(jìn)行 group by (a,b) 分組,然后再將分組出來(lái)的結(jié)果進(jìn)行 group by a 分組。
這時(shí)候分組出來(lái)的結(jié)果已經(jīng)和我想的帶小計(jì)的結(jié)果差不多了,只需要將 B 列為空的 A 列換成小計(jì)即可。
在這里插入圖片描述

利用 grouping,找出替換規(guī)律

通過(guò)下圖結(jié)果,可得出一個(gè)結(jié)論,如果利用 grouping(xx) 來(lái)顯示,則只要被 group by 分組過(guò)的列都會(huì)顯示 0,反之顯示 1;
例如: 1 2 兩行,grouping(A) 和 grouping(B) 由于被 group by rollup(a,b) 分組時(shí),先按照 group by (a,b) 分組,后按照 group by a 分組,所以 1 2 兩行的 grouping(A) 和 grouping(B) 顯示為 0。同樣第三行的 grouping(A) 被按照 group by a 分組過(guò),所以也顯示為 0, 第三行的 grouping(B) 列因?yàn)槲幢环纸M過(guò),所以顯示為1。
在這里插入圖片描述

利用decode,達(dá)成最終結(jié)果

在這里插入圖片描述

原文鏈接:https://blog.csdn.net/qq_26330543/article/details/126048534

欄目分類(lèi)
最近更新