mysql_ 窗函数

窗函数介绍

1、窗函数

1.1 dense_rank() over 函数可以获取排名并且没有间隙(1 2 2 3)

select
    score, dense_rank() over (order by score desc) as 'Rank'
from
    Scores
1.2 rank() over 函数可以获取排名但是有间隙( 1 1 3 3 5)

2、前后函数

3.1 LAG(expr, n) - 返回当前行的前n行(本组内)的expr值

LAG(expr, n) 返回当前行的前n行(本组)的expr值,lag允许你在每一个分组内, 从当前行向前看n行数据,n(也叫offset)是从当前行偏移的行数,以获取值。offset必须是一个非负整数。如果offset为零,则LAG()函数计算当前行的值。如果省略 offset,则LAG()函数默认使用n=1, 向前看一个数据。

3.2 lead(expr, n)` - 返回当前行的后n行(本组内)的expr值

具体用法与 lag 相似,下面的示例来自180. 连续出现的数字 - 力扣(LeetCode)

select distinct num as ConsecutiveNums 
from (
    select *, lag(num, 1) over (order by id) as lag_num,
              lead(num, 1) over (order by id) as lead_num
    from logs) l
where l.lag_num = l.num and l.lead_num = l.num

3、关于子查询

子查询查不到就会返回 null,二 limit 查不到就会什么也不返回,所以嵌套子查询可以满足某些要求返回 null

sql执行顺序 from -> where -> group by -> select -> order by -> limit

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值