我想從我的數據集中獲得每週排名類型的結果,並且失敗了多種技術。按周排名按排名排序
我的數據是這樣的:
+------------+------+--------+
| 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)。
它可以是一個存儲過程,視圖,任何東西。但它需要是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調用時,會產生不正確的結果(它沒有考慮周平均數)。我認爲這可能與變量設置的順序有關......但我很難過。
能你顯示一個或兩個失敗的嘗試? – Dukeling
你應該看看SO中的舊帖子。看到這裏 - http://stackoverflow.com/questions/3333665/mysql-rank-function – DhruvJoshi
請檢查我的答案是否對你有幫助。 – DhruvJoshi