mysql 窗口函数

说明:

序号NameDescription
1CUME_DIST()累积分布值
2DENSE_RANK()当前行在其分区内的秩,没有间隙
3FIRST_VALUE()来自窗框第一行的参数值
4LAG()来自分区内当前行的参数值
5LAST_VALUE()窗框最后一行的参数值
6LEAD()分区内当前行前导行的参数值
7NTH_VALUE()窗框第N行参数值
8NTILE()当前行在其分区内的Bucket编号。
9PERCENT_RANK()百分比秩值
10RANK()当前行在其分区内的秩,带间隙
11ROW_NUMBER()其分区中当前行的数量

概述

1、CUME_DIST()

CUME_DIST()是一个窗口函数,它返回一组值中值的累积分布。它表示值小于或等于行的值除以总行数的行数。CUME_DIST()函数的返回值大于零且小于或等于1(0 CUME_DIST()<< = 1)。重复的列值接收相同的CUME_DIST()值。

CUME_DIST() OVER (
 PARTITION BY expr, ...
 ORDER BY expr [ASC | DESC], ...
) 
2、DENSE_RANK()

DENSE_RANK()是一个窗口函数,它为分区或结果集中的每一行分配排名,而排名值没有间隙。行的等级从行前的不同等级值的数量增加1。

DENSE_RANK() OVER (
    PARTITION BY <expression>[{,<expression>...}]
    ORDER BY <expression> [ASC|DESC], [{,<expression>...}]
) 
3、FIRST_VALUE()

FIRST_VALUE()是一个窗口函数,允许您选择窗口框架,分区或结果集的第一行。

FIRST_VALUE(expression) OVER (
        [partition_clause]
        [order_clause]
        [frame_clause]
) 
4、LAG()

LAG()函数是一个窗口函数,允许您回顾多行并从当前行访问行的数据。

LAG(<expression>[,offset[, default_value]]) OVER (
    PARTITION BY expr,...
    ORDER BY expr [ASC|DESC],...
) 
5、LAST_VALUE()

LAST_VALUE()函数是一个窗口函数,允许您选择有序行集中的最后一行。

LAST_VALUE (expression) OVER (
    [partition_clause]
    [order_clause]
    [frame_clause]
) 
6、LEAD()

函数是一个窗口函数,允许您向前看多行并从当前行访问行的数据。与LAG()函数类似,LEAD()函数对于计算同一结果集中当前行和后续行之间的差异非常有用。

LEAD(<expression>[,offset[, default_value]]) OVER (
    PARTITION BY (expr)
    ORDER BY (expr)
) 
7、NTH_VALUE()

这NTH_VALUE()是一个窗口函数,允许您从有序行集中的第N行获取值。


NTH_VALUE(expression, N)
FROM FIRST
OVER (
    partition_clause
    order_clause
    frame_clause
) 
8、NTILE()

MySQL NTILE()函数将排序分区中的行划分为特定数量的组。从每个组分配一个从一开始的桶号。对于每一行,NTILE()函数返回一个桶号,表示行所属的组。

NTILE(n) OVER (
    PARTITION BY <expression>[{,<expression>...}]
    ORDER BY <expression> [ASC|DESC], [{,<expression>...}]
) 
9、PERCENT_RANK()

这PERCENT_RANK()是一个窗口函数,用于计算分区或结果集中行的百分位数。

PERCENT_RANK()
    OVER (
        PARTITION BY expr,...
        ORDER BY expr [ASC|DESC],...
    )
10、RANK()

RANK()函数为结果集的分区中的每一行分配一个排名。行的等级由一加上前面的等级数指定。

RANK() OVER (
    PARTITION BY <expression>[{,<expression>...}]
    ORDER BY <expression> [ASC|DESC], [{,<expression>...}]
) 
11、ROW_NUMBER()

这ROW_NUMBER()是一个窗口函数或分析函数,它为从1开始应用的每一行分配一个序号。(适用于排序和分组排序)

ROW_NUMBER() OVER (
  	PARTITION BY <expression>[{,<expression>...}]	
    ORDER BY <expression> [ASC|DESC], [{,<expression>...}]
) 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值