MySQL 中的排名函數
P粉310754094
2023-08-24 00:03:12
<p>我需要找出客戶的排名。這裡我根據我的要求添加對應的 ANSI 標準 SQL 查詢。請幫我將其轉換為 MySQL 。 </p>
<pre class="brush:php;toolbar:false;">SELECT RANK() OVER (PARTITION BY Gender ORDER BY Age) AS [Partition by Gender],
FirstName,
Age,
Gender
FROM Person</pre>
<p>MySQL中有沒有查詢排名的函式? </p>
這是一個通用解決方案,它將分割區上的密集等級分配給行。它使用使用者變數:
請注意,變數賦值位於
CASE
表達式內。這(理論上)解決了評估順序問題。新增IS NOT NULL
是為了處理資料型別轉換和短路問題。PS:透過刪除所有檢查平手的條件,可以輕鬆地將其轉換為分割區上的行號。
db 示範fiddle
一種選擇是使用排名變量,如下所示:
(SELECT @curRank := 0)
部分允許變數初始化,而無需單獨的SET
指令。測試案例:
結果: