溫馨提示×

SQL rank()和row_number()的區別

sql
小樊
334
2024-07-10 02:28:24
欄目: 云計算

rank()和row_number()都是用來生成行號的窗口函數,但兩者有一些區別:

  1. rank()函數會給相同數值的行分配相同的排名,然后跳過下一個排名值。例如,如果有兩行具有相同的值,則這兩行將被分配相同的排名,并且下一個排名將被跳過。因此,可能會出現排名的間隔。而row_number()函數會給每一行一個唯一的行號,不會跳過任何行。

  2. 當使用rank()函數時,如果有多行具有相同的值,則這些行的排名之和將會被計算并除以行數。例如,如果有兩行具有相同的值,它們的排名分別為2和3,則它們的排名之和為5,除以2得到2.5。而row_number()函數不會考慮相同值的情況,每一行都會有一個唯一的行號。

因此,如果需要考慮相同值的情況并希望在排名之和中得到平均排名,可以使用rank()函數。如果需要為每一行分配一個唯一的行號,可以使用row_number()函數。

1
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女