最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解partition by和group by對比

 更新時間:2020年09月03日 09:27:52   作者:-趕鴨子上架-  
這篇文章主要介紹了詳解partition by和group by對比,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

今天大概弄懂了partition by和group by的區(qū)別聯(lián)系。

1. group by是分組函數(shù),partition by是分析函數(shù)(然后像sum()等是聚合函數(shù));

2. 在執(zhí)行順序上,

以下是常用sql關鍵字的優(yōu)先級

from > where > group by > having > order by

而partition by應用在以上關鍵字之后,實際上就是在執(zhí)行完select之后,在所得結果集之上進行partition。

3.partition by相比較于group by,能夠在保留全部數(shù)據(jù)的基礎上,只對其中某些字段做分組排序(類似excel中的操作),而group by則只保留參與分組的字段和聚合函數(shù)的結果(類似excel中的pivot)。

partition by

group by

4.如果在partition結果上聚合,千萬注意聚合函數(shù)是逐條累計運行結果的!而在group by后的結果集上使用聚合函數(shù),會作用在分組下的所有記錄上。

數(shù)據(jù)如下,

SQL1

select a.cc,a.item,sum(a.num)
from table_temp a
group by a.cc,a.item

Result1

11條記錄經(jīng)group by后為10條,其中cc='cn' and item='8.1.1'對應的兩條記錄的num匯總成值3.

SQL2

select a.cc,a.num, min(a.num) over (partition by a.cc order by a.num asc) as amount
from table_temp a
group by a.cc,a.num;

select a.cc,a.num, min(a.num) over (partition by a.cc order by a.num desc) as amount
from table_temp a
group by a.cc,a.num;

Result2

  

兩個sql的唯一區(qū)別在于a.num的排序上,但從結果紅框中的數(shù)據(jù)對比可以看到amount值并不相同,且第二個結果集amount并不都是最小值1。

在這里就是要注意將聚合函數(shù)用在partition后的結果集上時,聚合函數(shù)是逐條累積計算值的!

其實partition by常同row_number() over一起使用,

select a.*, row_number() over (partition by a.cc,a.item order by a.num desc) as seq
from table_temp a

到此這篇關于詳解partition by和group by對比的文章就介紹到這了,更多相關partition by和group by內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

龙胜| 福泉市| 云和县| 额尔古纳市| 利川市| 毕节市| 民县| 蒙自县| 车险| 师宗县| 青河县| 兰州市| 韩城市| 河东区| 玉溪市| 贵溪市| 辛集市| 丰都县| 临海市| 堆龙德庆县| 万全县| 曲阳县| 边坝县| 太仓市| 永川市| 宽城| 缙云县| 乐都县| 江源县| 钟山县| 明星| 灯塔市| 青阳县| 赤壁市| 云阳县| 德阳市| 兴仁县| 九龙县| 玉溪市| 乡城县| 廉江市|