2013-09-27 2 views
1

테이블에서 내림차순으로 정렬 된 모든 팀의 상위 5 점 합계를 추출해야하는 프로젝트를 진행 중입니다. 여기 mysql의 테이블에서 최고 점수 5 점을 얻는 방법

사람이 쿼리에 대해

감사

+2

상위 5 개를 선택하는 subselect를 수행 한 다음, 외부 선택에서 합계를 수행하십시오. 거기에 그룹화가 필요합니다.이 작업을 시작하고 질문을 편집 할 수 있습니까? '좋은 연습이야! (몇 가지 테스트 데이터로 SQL Fiddle을 만들면 보너스 포인트가 생깁니다.) – halfer

+0

처음에 상위 5 개를 얻으려면 SO에서 [mysql] [그룹당 최대 n 개] 태그를 검색하십시오. 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
을 도와 줄 수

교체 테이블 구조

enter image description here입니다 이름이 적힌.

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;