SQL开窗函数

Posted tuzinn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL开窗函数相关的知识,希望对你有一定的参考价值。

参考链接:https://b23.tv/Ktb0oL

1.为什么用开窗函数(什么情况用)

  • eg:假设一个部门有很多人,又有很多部门,想求每个部门的平均工资
    • 一般情况下,group by部门,只会得到部门名和最后的平均工资
    • 利用开窗函数,还可以另外显示每个部门的人员信息

2.基本语法

# function:聚合函数
# expression:你想要的列(工资)
function (expression)
OVER (PARTITION BY column
      ORDER BY column ASC/DESC
      ROWS [···])
  • OVER():必须有,其余的不是必须的
  • eg:计算累计工资
    • 姓名(name)、部门(department)、小组(group)、工资(salary)、入职日期(join_date)
    • PARTITION(分割) BY
      • 每个部门的 - PARTITION BY department
      • 每个部门及小组的 - PARTITION BY department,group
  • ROWS
    • 默认:ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
      • (unbounded preceding and current row 所有前面的行和现在的行)
    • ROWS BETWEEN (x 是一个数值) …… AND ……
      • UNBOUNDED PRECEDING(前面所有行)
      • x PRECEDING (前x行)
      • x FOLLOWING (后x行)
      • CURRENT ROW (当前行)
  • function (expression)
    • avg(column)
    • count(*) / count(column)
    • dense_rank( )
    • lag(column [, offset ]) / lead(……)
    • max(column) , min(column), median(column)

以上是关于SQL开窗函数的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server中的开窗函数是啥?

SQL SEVER 开窗函数总结

sql 开窗函数

SQL SERVER开窗函数

开窗函数

T-SQL:开窗函数