本专栏中的许多示例将基于以下员工表(employee)。只有少数例子将以其他表格为基础;在这些情况下,表格将与示例一起进行说明。
一、RANK 函数
RANK()函数是SQL中的窗口函数之一。窗口函数查看部分数据并计算该部分的结果。
RANK()函数根据提供的列为每一行指定一个等级。RANK()包含在SELECT语句中,语法如下:
RANK() OVER (ORDER BY column ASC|DESC)
基本上,你可以向结果集中添加另一列。此列包括基于ORDER BY关键字后指定的顺序的每条记录的排名。这需要指定(1)用于对行进行排序的列,以及(2)顺序应该是升序还是降序。
第一行的排名为1,接下来的行的排名更高。如果任何行在用于排序的列中具有相同的值,则它们的排名相同,此时RANK会跳过指定的数字,也就是若有两行排序的列的值相同,则跳过一个数字,有三个,则跳过两个数字,以此类推。
例如,如果第五行和第六行在所提供的列中具有相同的值,则它们都获得秩5。然后,第七行得到秩7(即,秩6将丢失),例如:
二、SQL例句
有时,我们需要创建一个SQL查询,以显示基于特定顺序条件的行排名。在这个示例查询中,我们将显示按工资排序的所有员工的列表(首先是最高工资)。该报告将包括每位员工在排名中的职位。
SELECT
employee_id,
last_name,
first_name,
salary,
RANK() OVER (ORDER BY salary DESC) as ranking
FROM employee
ORDER BY ranking
在上面的查询中,我们使用函数RANK()。它是一个窗口函数,根据OVER子句中定义的顺序(1表示最高工资,2表示第二高工资,依此类推),返回每一行在结果集中的位置。我们需要在查询的末尾使用ORDER BY排序子句来指示结果集的显示顺序,执行结果如下:文章来源:https://www.toymoban.com/news/detail-561858.html
文章来源地址https://www.toymoban.com/news/detail-561858.html
到了这里,关于25个高级SQL查询-基于特定排序标准对行进行排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!