Hi all,
Wat ik probeer te doen is een distinct op 1 veld te doen, in een select waarin meerdere velden zitten.
Mijn query:
Ofwel: Ik wil de 25 cursisten met de hoogste score. Cursisten kunnen meerdere sessies (waarin ze punten kunnen halen) hebben, en alleen de beste sessie mag meetellen. In dit overzicht wil ik alleen unique cursisten. Als ik echter distinct toevoeg, werkt dat niet, aangezien de punten voor een cursist wel uniek zijn. Wat ik nu bv heb:
Cursist -- Punten
pietje -- 30
pietje -- 25
klaas -- 20
Ik wil dus alleen zien:
pietje -- 30
klaas -- 20
Hoe kan ik dit in mssql oplossen? Ik heb al gepuzzled met subqueries, maar ben er nog niet uitgekomen. In Postgresql kan je volgens mij distinct on( field ) doen, maar mssql neemt dat niet...
Alvast bedankt!
Wat ik probeer te doen is een distinct op 1 veld te doen, in een select waarin meerdere velden zitten.
Mijn query:
code:
1
2
3
4
| SELECT TOP 25 s.cursist, SUM(s.score) AS punten, s.session_uid FROM web_games_scores AS s WHERE s.game_uid = 1 GROUP BY s.cursist, s.session_uid ORDER BY punten DESC |
Ofwel: Ik wil de 25 cursisten met de hoogste score. Cursisten kunnen meerdere sessies (waarin ze punten kunnen halen) hebben, en alleen de beste sessie mag meetellen. In dit overzicht wil ik alleen unique cursisten. Als ik echter distinct toevoeg, werkt dat niet, aangezien de punten voor een cursist wel uniek zijn. Wat ik nu bv heb:
Cursist -- Punten
pietje -- 30
pietje -- 25
klaas -- 20
Ik wil dus alleen zien:
pietje -- 30
klaas -- 20
Hoe kan ik dit in mssql oplossen? Ik heb al gepuzzled met subqueries, maar ben er nog niet uitgekomen. In Postgresql kan je volgens mij distinct on( field ) doen, maar mssql neemt dat niet...
Alvast bedankt!