Dies ist anders als das als Doppel markierte, ich möchte die Top 5 für jedes Team zusammenfassen. Die Doppelpost nimmt für jedes Ergebnis getrennte Reihen auf.wählen Sie die besten 5 Punkte für jedes Team aus
Ich benutze diese Frage jetzt, aber es scheint, dass SQL zufällig 5 von etwa 10 Zeilen zurückgibt und zusammenzufassen, nicht die Top 5. Jeder hat etwas Input für mich?
ausgesuchtes Team, sum (Länge) als totalScore von (SELECT t *, @num_in_group:. = Fall, wenn @team = Team dann @num_in_group: = 0, sonst @num_in_group: = @ num_in_group + 1 Ende als num_in_group, @team: = Team als t FROM reg_catches t, (select @team: = - 1, @num_in_group: = 0) init ORDER BY-Team auf) sub WHERE sub.num_in_group < = 4 und = Wettbewerb 16 und team = 25 GROUP BY Team ORDER BY totalScore DESC;
Ich struggelaging auf eine SQL-Frage, die ich nicht herumkommen kann. Meine Ergebnistabelle sieht wie folgt aus: Ich versuche, die 5 besten Ergebnisse für jedes Team zusammenzufassen und die Ergebnisse auf die 3 bestplatzierten Teams zu beschränken. Alles funktionierte wie erwartet, bis ich meine letzte Punktzahl in der Ergebnistabelle hinzufügte. Die Ausgabe meiner SQL ist nun zufällig für Team 25. Ich erwartet haben, dass 520 ..
team length competition
----------------------
26 70 16
25 70 16
25 95 16
25 98 16
25 100 16
25 100 16
25 100 16
25 122 16
Output:
team totalScore
---- -----------
25 122
26 70
gewünschte Ausgabe:
team totalScore
---- -----------
25 522
26 70
SELECT team, SUM(length) AS totalScore
FROM(
SELECT team, length
FROM table_result m
WHERE competition = 16 and (
SELECT COUNT(*)
FROM table_result mT
WHERE mT.team = m.team AND mT.length >= m.length
) <= 5) tmp
GROUP BY team
ORDER BY totalScore DESC Limit 3
Jeder hat irgendwelche Ideen für mich?
Dieses Problem wird durch das Fehlen eines PRIMARY KEY unnötig kompliziert. – Strawberry