介绍
ROW_NUMBER()与()怎么在中PostgreSQL使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
语法:
ROW_NUMBER(),在(,(,PRITITION BY  col1), ORDER BY col2 [, DESC ],)
解释:
ROW_NUMBER()为返回的记录定义个行编号,由col1分区是根据col1分组,ORDER BY col2 (DESC)是根据col2进行排序。
举例:
postgres=#, create table 学生(id 串行name character 不同,course character 不同,score 整数); CREATE 表 postgres=#, postgres=# \ d 学生 ,,,Table “public.student" |,Column Type |,,, Modifiers ,, - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |,id integer , |, not null default nextval (& # 39; student_id_seq& # 39;:: regclass) |,name character varying |, |,course character varying |, ,score |, integer , |
, insert into student (名称、课程成绩),值(& # 39;周润发& # 39;,& # 39;语文& # 39;,89); ,insert into  student (名称、课程分数),值(& # 39;周润发& # 39;,& # 39;数学& # 39;,99); ,insert into  student (名称、课程分数),值(& # 39;周润发& # 39;,& # 39;外语& # 39;,67); ,insert into  student (名称、课程分数),值(& # 39;周润发& # 39;,& # 39;物理& # 39;,77); ,insert into  student (名称、课程分数),值(& # 39;周润发& # 39;,& # 39;化学& # 39;,87); ,insert into  student (名称、课程分数),值(& # 39;周星驰& # 39;,& # 39;语文& # 39;,91); ,insert into  student (名称、课程分数),值(& # 39;周星驰& # 39;,& # 39;数学& # 39;,81); ,insert into  student (名称、课程分数),值(& # 39;周星驰& # 39;,& # 39;外语& # 39;,88); ,insert into  student (名称、课程分数),值(& # 39;周星驰& # 39;,& # 39;物理& # 39;,68); ,insert into  student (名称、课程分数),值(& # 39;周星驰& # 39;,& # 39;化学& # 39;,83); ,insert into  student (名称、课程分数),值(& # 39;黎明& # 39;,& # 39;语文& # 39;,85); ,insert into  student (名称、课程分数),值(& # 39;黎明& # 39;,& # 39;数学& # 39;,65); ,insert into  student (名称、课程分数),值(& # 39;黎明& # 39;,& # 39;外语& # 39;,95); ,insert into  student (名称、课程分数),值(& # 39;黎明& # 39;,& # 39;物理& # 39;,90); ,insert into  student (名称、课程分数),值(& # 39;黎明& # 39;,& # 39;化学& # 39;,78年),
1。根据分数排序
postgres=#, select *, row_number(),在(order by score  desc) rn 得到学生; |,id name |, course |, score |, rn - - - - - + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - ,2 |,周润发,|,数学,|,99,|,1 ,13 |,黎明,|,外语,|,95,|,2 ,6 |,周星驰,|,语文,|,91,|,3 ,14 |,黎明,|,物理,|,90,|,4 ,1 |,周润发,|,语文,|,89,|,5 ,8 |,周星驰,|,外语,|,88,|,6 ,5 |,周润发,|,化学,|,87,|,7 ,11 |,黎明,|,语文,|,85,|,8 ,10 |,周星驰,|,化学,|,83,|,9 ,7 |,周星驰,|,数学,|,81,|,10 ,15 |,黎明,|,化学,|,78,|,11 ,4 |,周润发,|,物理,|,77,|,12 ,9 |,周星驰,|,物理,|,68,|,13岁 ,3 |,周润发,|,外语,|,67,| 14 ,12 |,黎明,|,数学,|,65,|,15 (15,行)
rn是给我们的一个排序。
2。根据科目分组,按分数排序
postgres=#, select *, row_number(),在(partition by  course order by score desc) rn 得到学生; |,id name |, course |, score |, rn - - - - - + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - ,5 |,周润发,|,化学,|,87,|,1 ,10 |,周星驰,|,化学,|,83,|,2 ,15 |,黎明,|,化学,|,78,|,3 ,13 |,黎明,|,外语,|,95,|,1 ,8 |,周星驰,|,外语,|,88,|,2 ,3 |,周润发,|,外语,|,67,|,3 ,2 |,周润发,|,数学,|,99,|,1 ,7 |,周星驰,|,数学,|,81,|,2 ,12 |,黎明,|,数学,|,65,|,3 null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullROW_NUMBER()与()怎么在中PostgreSQL使用