加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

详解partition by和group by比拟

发布时间:2020-10-26 14:59:53 所属栏目:创业 来源:网络整理
导读:这篇文章首要先容了详解partition by和group by比拟,文中通过示例代码先容的很是具体,对各人的进修可能事变具有必然的参考进修代价,必要的伴侣们下面跟着小编

  短视频,自媒体,达人种草一站处事

这篇文章首要先容了详解partition by和group by比拟,文中通过示例代码先容的很是具体,对各人的进修可能事变具有必然的参考进修代价,必要的伴侣们下面跟着小编来一路进修进修吧

本日或许弄懂了partition by和group by的区别接洽。

1. group by是分组函数,partition by是说明函数(然后像sum()等是聚合函数);

2. 在执行次序上,

以下是常用sql要害字的优先级

from > where > group by > having > order by

而partition by应用在以上要害字之后,现实上就是在执行完select之后,在所得功效集之长举办partition。

3.partition by对较量于group by,可以或许在保存所稀有据的基本上,只对个中某些字段做分组排序(相同excel中的操纵),而group by则只保存参汲辗书的字段和聚合函数的功效(相同excel中的pivot)。

partition by

4.假如在partition功效上聚合,万万留意聚合函数是逐条累计运行功效的!而在group by后的功效集上行使聚合函数,会浸染在分组下的全部记录上。

数据如下,

SQL1

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

Result1

11笔记录经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的独一区别在于a.num的排序上,但从功效红框中的数据比拟可以看到amount值并不沟通,且第二个功效集amount并不都是最小值1。

在这里就是要留意将聚合函数用在partition后的功效集上时,聚合函数是逐条累积计较值的!

着实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内容请搜刮剧本之家早年的文章或继承赏识下面的相干文章但愿各人往后多多支持剧本之家!

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读