【问题标题】:ranking of data based on multiple columns in mysql with using rank function使用 rank 函数基于 mysql 中的多列对数据进行排名
【发布时间】:2020-02-21 16:00:51
【问题描述】:

我对 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

当前输出

我想要的输出是

请帮忙

【问题讨论】:

  • 如果您想要的和当前的输出是文本而不是图像会更好。然后我们可以使用这些数据进行模型。
  • 你用的是什么版本的 MySQL?
  • 在什么基础上决定你想要的输出。

标签: mysql ranking


【解决方案1】:

如果我正确地解决了您的问题,您希望对 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;

【讨论】:

  • 很高兴为您提供帮助!请记住,在 Stack Overflow 上,习惯上用大的绿色复选标记标记已接受的答案。
猜你喜欢
  • 1970-01-01
  • 2019-03-31
  • 2012-04-19
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多