2013-09-27 48 views
1

我正在開發一個項目,其中我需要從表中按降序排序的每個團隊中提取前5分的總和。如何從mysql中的表格中檢索5個最高分的總和

這裏是表結構

enter image description here

誰能幫我這個查詢

感謝

+2

做一個子選擇,選擇前五個,然後在外部選擇,對他們做一個總和。你也需要一些分組 - 你可以從這裏開始,並將其編輯成你的問題? '這是一個好習慣! (如果您使用某些測試數據製作SQL小提琴,則爲您提供獎勵積分)。 – halfer

+0

爲了獲得前5名,首先搜索標籤'[mysql] [最大n-per-group]'。 MySQL沒有內置的「TOP 5」運算符,您需要使用這些答案中的方法來實現它。 – Barmar

回答

4
SELECT team_id AS `team` , (

    SELECT SUM(score) 
    FROM `table` 
    WHERE team_id = `team` 
    ORDER BY score DESC 
    LIMIT 5 
) AS `score` 

FROM `table` 
GROUP BY team_id 
ORDER BY `score` DESC 
+0

其簡單好的查詢我非常感謝你 – user1684080

1
$count = 0; 
foreach($this->conn->query("SELECT * FROM scores DESC LIMIT 5") as $rows){ 
    $count += $rows; 
} 
2
SELECT sum(score) as total 
FROM 
    (SELECT score FROM your_table ORDER BY by score DESC LIMIT 1,5) 
0

更換foo和你的名字。

SELECT team_id, SUM(score) AS `score` 
FROM `foo` 
WHERE 
    (SELECT COUNT(*) 
    FROM `foo` AS t1 
    WHERE t1.score >= `foo`.score) <= 5 
GROUP BY team_id 
ORDER BY `score` DESC; 
相關問題