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
命令。测试用例:
结果: