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

sql窗口函数和开窗函数



开窗函数对一组值进行操作,它不像普通聚合函数那样需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列

开窗函数的语法形式为:函数 + over(partition by <分组用列> order by <排序用列>),表示对数据集按照分组用列进行分区,并且并且对每个分区按照函数聚合计算,最终将计算结果按照排序用列排序后返回到该行。括号中的两个关键词partition by 和order by 可以只出现一个。

注意:开窗函数不会互相干扰,因此在同一个查询语句中可以同时使用多个开窗函数

开窗函数适用于 mysql 8.0以上版本, sql sever 、hive、oracle 等

 
  

 
  

1.1、row_number

 
  

 1.2、rank

 
  

 1.3、dense_rank

 
  

 1.4、ntile

 
  

 
  

2.1、sum

2.1.1 不带order by
 
  

2.1.2 带有order by
 
  

2.2、count

2.2.1 不带order by
 
  

 2.2.2 带有 order by
 
  

2.3 min

2.3.1 不带order by
 
  

2.3.2 带有order by
 
  

2.4 max

2.4.1 不带order by
 
  

2.4.2 带有order by
 
  

2.5 avg

2.5.1 不带order by
 
  

2.5.2 带有order by
 
  

 
  

3.1 lag

3.1.1 不带order by
 
  

 
  

3.1.2 带有 order by
 
  

3.2 lead

 
  

3.3  first_value 和 last_value

3.3.1 不带order by
 
  

3.3.1 带有 order by
 
  

 
  

4.1 range

 
  

4.2 rows

 
  

 
  

参考:SQL函数 - 开窗(窗口)函数 - 知乎

版权声明


相关文章:

  • 小程序扫二维码接口2025-06-08 13:30:01
  • opengl教学视频2025-06-08 13:30:01
  • leveldb compaction2025-06-08 13:30:01
  • vscode+python2025-06-08 13:30:01
  • 好看的ui网站2025-06-08 13:30:01
  • 二阶有源低通滤波器2025-06-08 13:30:01
  • linux交叉编译原理2025-06-08 13:30:01
  • 免费的dns地址2025-06-08 13:30:01
  • jvm satb2025-06-08 13:30:01
  • jre插件安装2025-06-08 13:30:01