sql 中 rank() 函數用于對查詢結果集中的行進行排名,分配排名值表示每行在組或表中的相對位置。用法:rank() over ( [partition by 分組字段] order by 排序字段)。參數:partition by 分組字段(可選):將結果集分組,分別對每個組進行排名。order by 排序字段:排名依據的列。返回值:一個表示行相對排名的整數。
SQL 中 RANK() 函數的使用
RANK() 函數在 SQL 中用于對查詢結果集中的行進行排名。它分配一個排名值,表示每行在組內或整個表中的相對位置。
用法:
<code class="sql">RANK() OVER ( [PARTITION BY 分組字段] ORDER BY 排序字段)</code>
登錄后復制
參數:
PARTITION BY 分組字段:可選。將結果集分組,分別對每個組進行排名。
ORDER BY 排序字段:排名依據的列。
返回值:
一個表示行相對排名的整數。
示例:
查詢銷售表中每個產品的銷售排名:
<code class="sql">SELECT product_id, product_name, RANK() OVER (PARTITION BY product_id ORDER BY sales_count DESC) AS sales_rank FROM sales_table;</code>
登錄后復制
結果:
product_id | product_name | sales_rank |
---|---|---|
1 | Product A | 1 |
1 | Product B | 2 |
2 | Product C | 1 |
3 | Product D | 1 |
注意:
如果行具有相同的值,它們將具有相同的排名。
行的排名可能存在間隙,例如當存在重復值時。
RANK() 函數與 DENSE_RANK() 函數類似,但后者不會跳過重復值的排名。