2016-11-09 4 views
-2

So habe ich zur Zeit eine Tabelle wie folgt festgelegteSQL-Abfrage für die Top 10 Siege

gameID | userID | WinLose 
1  | 1  | win 
2  | 1  | win 
3  | 1  | lose 
4  | 2  | win 
5  | 2  | lose 
6  | 2  | win 

Es dauert userID als Fremdschlüssel aus einer Benutzertabelle und zeichnet jedes Spiel gespielt, zusammen mit dem Wetter ein Benutzer gewonnen oder hat verloren.

Kann mir jemand sagen, wie ich eine Abfrage schreiben würde, die summieren würde, wie oft jeder Benutzer ein Spiel gewonnen hat, und dann die 10 höchsten Werte auflisten?

Ich versuche, die Top 10 Benutzer mit den meisten Gewinnen anzuzeigen.

Vielen Dank für jede Hilfe.

+2

SO ist eine Q/A-Site, kein kostenloser Coding-Service. Bitte geben Sie an, was Sie versucht haben und welche Probleme Sie bei diesem Versuch hatten. – Shadow

+0

Es gibt nur 6 Ergebnisse – Strawberry

+0

Siehe http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-bea- very-simple-sql-query – Strawberry

Antwort

1

können Sie versuchen, mit count und group by Klausel eine Summe von Benutzern zu erhalten und dann order by zu den Suchergebnisse zu sortieren und die Top 10 mit limit erhalten:

select userID 
    , count(*) as total_wins 
from tbl 
where WinLose='win' 
group by userID 
order by total_wins desc 
limit 10 

oder bedingten sum:

select userID 
    , sum(WinLose='win') as total_wins 
from tbl 
group by userID 
order by total_wins desc 
limit 10 
+0

'Summe'? Warum nicht 'count (*) ... wo WinLose = 'win'? –