ROW_NUMBER()与()怎么在中PostgreSQL使用

  介绍

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   null

ROW_NUMBER()与()怎么在中PostgreSQL使用