2013-09-27 4 views
1

Я работаю над проектом, где мне нужно извлечь сумму из 5 лучших баллов для каждой команды, отсортированной по убыванию в таблице.Как получить сумму 5 баллов из таблицы в mysql

Вот структура таблицы

enter image description here

Может кто-нибудь помочь мне для этого запроса

Благодарности

+2

Сделайте подзаголовок, который выбирает первую пятерку, затем во внешнем выборе, делайте на них сумму. Вам также понадобится группировка - можете ли вы начать с этого, и изменить это на свой вопрос? «Хорошая практика! (Бонусные баллы для вас, если вы делаете SQL Fiddle с некоторыми тестовыми данными). – halfer

+0

Чтобы получить верхние 5 в первую очередь, выполните поиск SO для тегов '[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; 
Смежные вопросы