学习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;

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;

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;

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值