mysql - 使用 rank 函数基于 mysql 中的多列对数据进行排名
问题描述
我对 mysql 很陌生,并试图根据两个字段对最高记录进行排名
与您共享当前脚本和输出以及所需的输出
当前脚本:
select u_rank, c_rank,u_name,c_name,
@curRank := @curRank + 1 AS rank
from (
SELECT u_rank, c_rank,u_name,c_name
from abc
) a,
(
select @curRank := 0
) r
order by c_rank,u_rank
当前输出
我想要的输出是
请帮忙
解决方案
如果我正确地解决了您的问题,则您希望对 c_ranks 升序或每个 u_name 进行排名,然后按该排名然后按 u_rank 排序。之后,您需要按该顺序获得所有记录的排名。我不确定我刚才的措辞是否有意义......但以下内容应该会为你得到这个结果:
SET @rank1 = 0;
SET @rank2 = 0;
SET @u_name = '';
SELECT u_rank, c_rank, u_name, c_name, @rank2 := @rank2 + 1 AS rank
FROM (
SELECT u_rank,
c_rank,
c_name,
@rank1 := (@rank1 + 1 - IF(@u_name = u_name, 0, @rank1)) AS rank1,
@u_name := u_name AS u_name
FROM abc
ORDER BY u_name, c_rank
) foo
ORDER BY rank1, u_rank;
推荐阅读
- java - Paper.init 没有被调用
- php - 检查自 Woocommerce 订单下达以来是否已过去 24 小时
- sql - Presto sql case if-我可以只选择几个案例并为其他结果提供原始输出吗?
- c# - PartialView Action 正在调用自己
- python - 如何使用参数调用管道
- git - 一个 Git 存储库的 VIM 寻呼机相关问题
- ruby - 是否可以将 STDOUT 重定向到记录器?
- api-platform.com - 为什么我的 apt-platform 过滤器没有按预期过滤?
- javascript - Ajax 调用 perl 脚本
- ruby-on-rails - Rails Active 作业下载文件未被控制器销毁操作删除