首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按周排名组排名

按周排名组排名
EN

Stack Overflow用户
提问于 2014-02-10 08:51:06
回答 1查看 172关注 0票数 0

我正试图从我的数据集中获得一个每周排序类型的结果,并且失败了多项技术。

我的数据如下:

代码语言:javascript
复制
+------------+------+--------+
| team       | week |points  |
+------------+------+--------+
| blue       |   1  | 10     | 
| green      |   1  | 15     |
| red        |   1  | 16     |
| blue       |   2  | 5      |
| green      |   2  | 18     |
| red        |   2  | 6      |
| blue       |   3  | 2      |
| green      |   3  | 8      |
| red        |   3  | 8      |
+------------+------+--------+

我试着得到这样的东西:

代码语言:javascript
复制
+------------+------+--------+
| team       | week | rank   | 
+------------+------+--------+
| blue       |   1  | 3      | 
| green      |   1  | 2      |
| red        |   1  | 1      |
| blue       |   2  | 3      |
| green      |   2  | 1      |
| red        |   2  | 2      |
| blue       |   3  | 3      |
| green      |   3  | 1      |
| red        |   3  | 1      |
+------------+------+--------+

你可以看到,在第三周,分数是平的,所以排名也需要平手。打成平手的等级永远是数值中较低的。(即关节2,而不是3)。

它可以是一个存储过程,视图,任何东西。但它必须是MySql。

到目前为止,我有这样的看法:

代码语言:javascript
复制
SELECT team, 
@rnk:= CASE 
    WHEN @week_id <> week THEN 0
    WHEN points = @tot THEN @rnk
    ELSE @rnk+1 
END 
AS rank,
@week_id := week AS wk,
@tot := points AS pts
FROM
  (SELECT @rnk:= -1) s,
  (SELECT @week_id:= -1) c,
  (SELECT *
   FROM v_weeklypointtotals
   ORDER BY week, points DESC
  ) t

但是,当从MySql工作台调用时,它工作得很好。但是当通过PHP调用时,它会给出不正确的结果。(它没有考虑到被打成平手的几周)。我认为这可能与设定变量的顺序有关.但我很困惑。

EN

回答 1

Stack Overflow用户

发布于 2014-02-10 09:11:46

顺便说一句,如果你不去查看我在评论中链接到的SO帖子,你可以试试这个魔法:)

代码语言:javascript
复制
SELECT    ( 
            CASE Week 
            WHEN @curW 
            THEN @curRow := @curRow + 1 
            ELSE @curRow := 1 AND @curW := Week END
          ) + 1 AS rank,
          Week,
          team,
          points
FROM      tablename,
          (SELECT @curRow := 0, @curW := 0) r
ORDER BY  Week DESC, points DESC;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21672558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档