We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
create table sequence (id int, name varchar(10), age int); insert into sequence values (1, '张三', 19), (2, '李四', 20), (3, '王五', 30), (4, '赵六', 24), (5, '小红', 19);
使用 select * from sequence 查询出来结果,是默认排序的,如下图:
select * from sequence
下面使用分别使用 row_number() , rank() , dense_rank() 排序,看看是什么效果。
row_number()
rank()
dense_rank()
将 age 进行升序排列,需要结合 over() 来使用
age
over()
select *, row_number() over(order by age) as 排名 from sequence;
如图所示:
查询出来的结果是按照 age 进行升序排列,不重复, age 相同的数据按照它的默认顺序进行展示,如果想自定义相同 age 的顺序,和 order by 字段使用的方法一致
order by
select *, rank() over(order by age) as 排名 from sequence;
相同的 age 排名一样,也就是说这里没有第二名。
不过需要注意的是,不能自定义相同 age 的顺序,否则它的排名会变化
age 相同,按照 id 降序排列
id
select *, rank() over(order by age, id desc) as 排名 from sequence;
会根据 age 和 id 两个维度进行排序,也就不存在两个并列第一名了。
select *, dense_rank() over(order by age) as 排名 from sequence;
age 相同的进行排序,并列第一名,但是后面的数据并不会跳过第二名,而是紧接着第一名排序
它和 rank 一样,不能自定义相同 age 的顺序,否则它的排名也会变化,因为排序会按照两个维度来。
rank
The text was updated successfully, but these errors were encountered:
No branches or pull requests
使用
select * from sequence
查询出来结果,是默认排序的,如下图:下面使用分别使用
row_number()
,rank()
,dense_rank()
排序,看看是什么效果。row_number()
根据顺序排序,不会重复将
age
进行升序排列,需要结合over()
来使用如图所示:
查询出来的结果是按照
age
进行升序排列,不重复,age
相同的数据按照它的默认顺序进行展示,如果想自定义相同age
的顺序,和order by
字段使用的方法一致rank()
排序相同时,会重复将
age
进行升序排列,需要结合over()
来使用如图所示:
相同的
age
排名一样,也就是说这里没有第二名。不过需要注意的是,不能自定义相同
age
的顺序,否则它的排名会变化age
相同,按照id
降序排列如图所示:
会根据
age
和id
两个维度进行排序,也就不存在两个并列第一名了。dense_rank()
排序相同时,会重复,但不会跳过重复的排名将
age
进行升序排列,需要结合over()
来使用如图所示:
age
相同的进行排序,并列第一名,但是后面的数据并不会跳过第二名,而是紧接着第一名排序它和
rank
一样,不能自定义相同age
的顺序,否则它的排名也会变化,因为排序会按照两个维度来。The text was updated successfully, but these errors were encountered: