Ranking-Funktion in MySQL
P粉310754094
2023-08-24 00:03:12
<p>Ich muss das Ranking meiner Kunden herausfinden. Hier füge ich die entsprechende ANSI-Standard-SQL-Abfrage gemäß meinen Anforderungen hinzu. Bitte helfen Sie mir, es in MySQL zu konvertieren. </p>
<pre class="brush:php;toolbar:false;">SELECT RANK() OVER (PARTITION BY Gender ORDER BY Age) AS [Partition by Gender],
Vorname,
Alter,
Geschlecht
VON Person</pre>
<p>Gibt es in MySQL eine Funktion zur Abfrage von Rankings? </p>
这是一个通用解决方案,它将分区上的密集等级分配给行。它使用用户变量:
请注意,变量赋值位于
CASE
表达式内。这(理论上)解决了评估顺序问题。添加IS NOT NULL
是为了处理数据类型转换和短路问题。PS:通过删除所有检查平局的条件,可以轻松地将其转换为分区上的行号。
db 演示fiddle
一种选择是使用排名变量,如下所示:
(SELECT @curRank := 0)
部分允许变量初始化,而无需单独的SET
命令。测试用例:
结果: