Jag har en databas med alla resultat i en golf tävling. Tävlingen fungerar så att de 10 bästa resultaten för varje spelare räknas. För att ta fram resultaten använder jag mig av följande SQL sats: Du kan ju testa med: Den tog bara ut de 10 första spelarna och deras totala resultat, inte de 10 bästa resultaten för spelarna.SQL: Ta fram och sortera summan av de 10 minsta talen
<code>
SELECT sid, sum(resultat) AS Res, count(sid) AS Antal
FROM tavlingResultat
WHERE TavlingsID=6
GROUP BY sid
HAVING count(*) = 10 OR count(*) > 10
ORDER BY sum(resultat);
</code>
Satsen ska alltså ta ut alla som har 10 eller fler resultat i tävlingen, vilket den också gör. Problem uppstår när någon har fler än 10 resultat i databasen och den räknar med alla resultat.
Hur får jag satsen att endast summera de 10 bästa resulten för alla spelare samt att sortera efter den summan?Sv: SQL: Ta fram och sortera summan av de 10 minsta talen
SELECT TOP 10 sid, sum(resultat) AS Res, count(*) AS Antal
FROM tavlingResultat
WHERE TavlingsID = 6
GROUP BY sid
HAVING count(*) => 10
ORDER BY sum(resultat), sid; Sv: SQL: Ta fram och sortera summan av de 10 minsta talen