当前位置:   article > 正文

SQL 中的窗口函数_sql窗口函数

sql窗口函数

SQL 中的窗口函数(Window Functions)是一种特殊的函数,它可以在查询结果的某个区间内执行计算,而不仅仅是对单个行进行计算。

以下是一些常用的窗口函数:

1、ROW_NUMBER()

ROW_NUMBER() 函数可以给查询结果的每一行分配一个唯一的数字。通常,我们可以使用 ROW_NUMBER() 来按照特定的列对查询结果进行排序。

例如,以下 SQL 查询会按照 “sales” 表中 “amount” 列的降序排列,并给每行分配一个唯一的数字:

SELECT ROW_NUMBER() OVER (ORDER BY amount DESC) AS row_num, *
FROM sales;
  • 1
  • 2

2、RANK() 和 DENSE_RANK()

RANK() 和 DENSE_RANK() 函数可以为查询结果中的每一行分配排名。不同之处在于,如果有多个行具有相同的值,则 DENSE_RANK() 不会跳过排名

例如,以下 SQL 查询会按照 “sales” 表中 “amount” 列的升序排列,并为每个值分配一个排名:


SELECT amount, RANK() OVER (ORDER BY amount) AS rank,
       DENSE_RANK() OVER (ORDER BY amount) AS dense_rank
FROM sales;
  • 1
  • 2
  • 3
  • 4

3、SUM()、AVG()、MIN() 和 MAX()

SUM()、AVG()、MIN() 和 MAX() 函数可以用于计算查询结果的某个区间内的汇总、平均值、最小值和最大值。

例如,以下 SQL 查询会计算 “sales” 表中 “amount” 列的累计和,并为每个值分配一个唯一的数字:

SELECT amount, SUM(amount) OVER (ORDER BY date) AS running_total
FROM sales;
  • 1
  • 2

以上是一些常用的窗口函数,窗口函数在 SQL 中使用非常广泛,并且可以让我们在查询结果中执行更复杂的计算和分析。

案例

分数排名
在这里插入图片描述
在这里插入图片描述
sql语句:

# Write your MySQL query statement below
select score,dense_rank() 
over (order by score desc) as 'rank' 
from Scores;
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/922811
推荐阅读
相关标签
  

闽ICP备14008679号