详解partition by和group by对比

作者:-赶鸭子上架- 时间:2024-01-24 11:27:05 

今天大概弄懂了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

详解partition by和group by对比

group by

详解partition by和group by对比

4.如果在partition结果上聚合,千万注意聚合函数是逐条累计运行结果的!而在group by后的结果集上使用聚合函数,会作用在分组下的所有记录上。

数据如下,

详解partition by和group by对比

SQL1


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

Result1

详解partition by和group by对比

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

详解partition by和group by对比详解partition by和group by对比

两个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对比

来源:https://www.cnblogs.com/hello-yz/p/9962356.html

标签:partition,by,group,by
0
投稿

猜你喜欢

  • ASP.Net Core MVC基础系列之中间件

    2024-05-09 09:04:47
  • JavaScript循环遍历的24个方法,你都知道吗

    2024-04-17 09:41:18
  • Python人工智能之波士顿房价数据分析

    2021-09-23 19:43:35
  • 解析xml字符串的函数

    2008-06-10 12:37:00
  • 超长文章的智能分页-支持HTML

    2008-03-20 13:21:00
  • Python实现自动驾驶训练模型

    2023-07-28 18:45:29
  • 详解mysql8.0创建用户授予权限报错解决方法

    2024-01-26 08:58:31
  • BeautifulSoup中find和find_all的使用详解

    2023-11-08 21:00:22
  • GO语言中的方法值和方法表达式的使用方法详解

    2024-05-09 14:53:04
  • MySQL 的 21 个规范、优化最佳实践!

    2024-01-24 13:19:29
  • mpvue跳转页面及注意事项

    2024-05-02 16:09:57
  • php实现断点续传大文件示例代码

    2024-04-28 09:45:17
  • python 深度学习中的4种激活函数

    2023-10-23 19:42:23
  • Go秒爬博客园100页新闻

    2024-04-26 17:15:49
  • Python实现图片格式转换

    2023-08-03 04:58:57
  • vue项目打包后怎样优雅的解决跨域

    2024-04-29 13:11:03
  • 手写一个python迭代器过程详解

    2021-06-29 07:45:23
  • Java 正则表达式功能及应用

    2022-03-25 10:07:09
  • 深入理解Python3 内置函数大全

    2022-06-27 22:11:36
  • Oracle数据表中的死锁情况解决方法

    2024-01-15 11:23:01
  • asp之家 网络编程 m.aspxhome.com