一.排序函数介绍
用法和参数
OVER (ORDER BY )
二.RANK()函数
描述
RANK()函数会返回排序后的排名序号(有并列,不连续)
用法和参数
RANK() OVER (ORDER BY …)
- RANK()会返回每一行的等级(序号)
- ORDER BY`对行进行排序将数据按升序或降序排列
- RANK()OVER(ORDER BY …)是一个函数,与 ORDER BY 配合返回序号
实例
# 统计每个游戏的名字,分类,更新日期,更新日期序号
SELECT
name,
genre,
updated,
RANK() OVER (ORDER BY updated)
FROM game;
RANK()与ORDER BY多列排序
# 在列表中查找比较新,且安装包体积较小的游戏
SELECT
*,
RANK() OVER (ORDER BY released DESC , size ASC )
FROM game;
在窗口函数外使用RANK()与ORDER BY
SELECT
name,
RANK() OVER (ORDER BY editor_rating) as r
FROM game
ORDER BY size DESC ;
三.DENSE_RANK()函数
描述
RANK() 函数返回的序号,可能会出现不连续的情况。如果想在有并列情况发生的时候仍然返回连续序号可以使用dense_rank()函数(有并列,连续)
实例
# 统计每个游戏的名字,分类,更新日期,更新日期序号
SELECT
name,
genre,
updated,
DENSE_RANK() OVER (ORDER BY updated)
FROM game;
四.ROW_NUMBER()函数
描述
想获取排序之后的序号,也可以通过ROW_NUMBER() 来实现,返回行号。(无并列,连续)
实例
# 需求:将游戏按发行时间排序,返回唯一序号
SELECT *, ROW_NUMBER() OVER (ORDER BY released) FROM game;
五.NTILE(X)函数
描述
NTILE(X)函数将数据分成X组,并给每组分配一个数字
实例
# 将所有的游戏按照安装包大小分成4组,返回游戏名字,类别,安装包大小,和分组序号
SELECT
*,
ntile(4) OVER (ORDER BY size)
FROM game;
版权声明:本文为feizuiku0116原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。