当前位置:网站首页 > 技术博客 > 正文

开窗函数语法结构



  • 开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数的使用使得这些经典的难题可以被轻松的解决。目前在 MSSQLServer、Oracle、DB2 等主流数据库中都提供了对开窗函数的支持,MySQL8.0支持。 5.7 --> 8.0
  • 开窗函数简介:与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是它不像普通聚合函数那样每组只返回一个值,开窗函数可以为每组返回多个值,因为开窗函数所执行聚合计算的行集组是窗口。在 ISO SQL 规定了这样的函数为开窗函数,在 Oracle 中则被称为分析函数。
 

常用开窗函数

 

HQL中(目前只知道hql中可替换)
partition by … order by …
等价于
distribute by … sort by …

建表
在这里插入图片描述

排序开窗函数

  • 第一种:不写任何条件,只作排序使用
 

运行结果:

在这里插入图片描述

  • 第二种:分组排序(默认升序)
 

运行结果:
在这里插入图片描述

 

聚合开窗函数

  • 不加任何条件 求和该字段所有值
 

在这里插入图片描述

  • 添加group by
 

在这里插入图片描述

  • 添加order by排序
 

在这里插入图片描述

每次求和分组内前几个的值 常用于求单个用户对单个商品点击量的日累计点击量等。
max()over()
count() over()
max() over()
min() over()
avg() over()
这几个用法类似

常用的开窗函数还有
first_value() over(partition by … order by …)
last_value() over(partition by … order by …)
lag() over(partition by … order by …)

有兴趣自己去测试一下吧!

  • 上一篇: dnspod cdn
  • 下一篇: linux中getpid
  • 版权声明


    相关文章:

  • dnspod cdn2025-05-03 20:01:05
  • 线程同步原理2025-05-03 20:01:05
  • 异或 或的区别2025-05-03 20:01:05
  • 异或位运算怎么算2025-05-03 20:01:05
  • randstr2025-05-03 20:01:05
  • linux中getpid2025-05-03 20:01:05
  • linux将gbk转为utf82025-05-03 20:01:05
  • qss语法2025-05-03 20:01:05
  • java自己写一个注解2025-05-03 20:01:05
  • 动态规划之01背包问题(最易理解的讲解)2025-05-03 20:01:05