2016-03-29 7 views
0

Ich habe eine Tabelle, die die folgende Form hat:Erhalten Sie den letzten Satz von Daten in jedem Jahr in SQL?

ranking_date ranking player_id ranking_points 
------------ ------- --------- --------------- 
1980-12-22 3  100284  0 
1980-12-22 21  100676  0 
1980-12-22 44  100653  0 
1980-12-22 136  100713  0 
1980-12-22 182  100757  0 
1980-12-22 211  100800  0 
1980-12-22 255  101061  0 
1980-12-22 283  101062  0 
1980-12-22 372  100837  0 
1980-12-22 390  100682  0 
1980-12-22 423  100923  0 
1980-12-22 440  100936  0 
1983-01-03 2  100284  0 
1983-01-03 7  101062  0 
1983-01-03 9  100676  0 

So würde Ich mag die letzte ranking_date für jedes Jahr bekommen. Ich habe Rankings von 1973 bis 2016, aber nicht alle letzten Ranglisten sind im Dezember. Auch diese aktuelle Tabelle ist etwas mehr als 1 Million Zeilen, also mache ich das, um das Jahresend-Ranking zu bekommen. Danke für Ihre Hilfe!

+0

Können Sie Ihren _work/code_ veröffentlichen? – AKS

+1

All Ihre Rangliste welche sind in 1980-12-22, welche ist die letzte Rangliste? Meinst du letztes Ranking für jeden Spieler in jedem Jahr? – FLICKER

+0

Dies ist nur ein Beispiel. Der echte Tisch hat eine Million Zeilen. Es hat im Grunde einen Rang für eine wie 1000 Spieler aus jeder Woche seit 40 Jahren. Ich versuche, die letzten Rankings für jedes Jahr zu bekommen. – hereswilson

Antwort

1

Wenn ich Ihre Frage richtig verstanden habe, versuchen Sie, die Ranglisten für das letzte Datum jedes Jahres aufzulisten. Ich rufe Sie Ihren Tisch tablename

SELECT * 
FROM tablename 
WHERE ranking_date IN (SELECT MAX(ranking_date) 
         FROM tablename 
         GROUP BY YEAR(ranking_date)) 

Die Unterabfrage

SELECT Max(ranking_date) FROM tablename GROUP BY YEAR(ranking_date) wird die letzte (Maximum oder MAX) Kalendertag eines jeden Jahres identifizieren. Die Jahre sind mit der YEAR(ranking_date) Gruppierung identifiziert. Durch Anwenden dieser Unterabfrage auf die WHERE-Klausel in der Hauptabfrage sollten die Datensätze für das letzte Datum jedes Jahres abgerufen werden.

+0

Ja! Vielen Dank. Ich wusste, dass ich eine Kombination von max brauchte, aber ich dachte nicht, eine Unterabfrage zu verwenden. – hereswilson