Oracle partition by快速理解与使用区别于group by相关

快速理解:

group by 使用一个(多个)含重复数据的字段进行表数据合算(聚合),结果集展示聚合结果。

partition by 同样适用于含重复数据的一个(多个)字段,但是不进行聚合,只是在结果集相同的数据摆在一起。

 

例如:下图sql语句,不需要考虑表是什么样的(选择客户编号KHBH,并partition by客户编号)。

 

 结果集:查询部分数据集如下,可以看到,相同的KHBH被放置在了一起。

 

 

 此外多提一嘴,使用group by时,除了被视为分组对象的字段,其他字段要使用聚合函数。group by后多行缩为一行,如果没有聚合函数,将会无法将多行数据放入一行产生报错。

而partition by展示多行,因此不需要聚合函数,但是!必须使用order by!因为分完组必须确认顺序。原因是partition by是over()函数的内部语句,over()用于max()/min()/rank()/lead()/lag()等函数的条件描述,而这些函数一旦缺少排序将失去意义。(本来也是,你都不排序,你咋求最大最小,但是排序的字段你可以自行决定)

 

posted @ 2022-11-14 17:27  龚一半  阅读(1077)  评论(0编辑  收藏  举报