作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图从我的数据集中获取每周排名类型的结果,但使用多种技术都失败了。
我的数据如下所示:
+------------+------+--------+
| 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 |
+------------+------+--------+
我正在尝试得到这样的东西:
+------------+------+--------+
| 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 |
+------------+------+--------+
您可以在第 3 周看到积分相同,因此排名也需要相同。并列排名始终是这些值中较低的一个。 (即并列第二名始终排名 2 2 而不是 3 3)。
它可以是存储过程、 View 或任何东西。但必须是MySql。
到目前为止我有这个:
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 调用时,它会给出错误的结果。 (它不考虑并列周数)。我认为这可能与变量设置的顺序有关......但我很困惑。
最佳答案
试试这个:
select team,week,
(select count(*)+1 from Table1 where week=t1.week
and points >t1.points ) as rank
FROM Table1 t1
关于mysql - 按周排名分组排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21672558/
我是一名优秀的程序员,十分优秀!