2017-05-11 2 views
0

Angenommen, ich habe diese TabelleTOP 5 Partituren Monat (Monat ist ein varchar)

article | score | date (VARCHAR) 
A   10  2010/01 
B   10  2010/01 
C   10  2010/01 
D   10  2010/01 
E   10  2010/01 
F   1  2010/01 
G   1  2010/01 
H   1  2010/01 
B   9  2010/01 
B   9  2010/01 
A   4  2010/02 
C   10  2010/02 
G   10  2010/02 
G   2  2010/02 

und ich würde die TOP 5 Noten mit deutlichem Datum zurückzubringen.

der OUTPUT Ich mag:

article | average | date 
A   10  2010/01 
B   9.33  2010/01 
C   10  2010/01 
D   10  2010/01 
E   10  2010/01 
A   4  2010/02 
....  ...  ..... 

ich einige Abfragen mit wenige Ergebnis versuchen.

SELECT 
    article as articlex, 
    date as datex, 
    (SELECT avg(score) FROM test_anna WHERE article = articlex AND date = datex) as average 
FROM test_anna GROUP BY articlex, average ORDER BY datex ASC, articlex ASC 

Wie mache ich das mit mysql-Anweisung? Danke!

+4

Tag Ihre Frage mit der Datenbank Sie verwenden. –

Antwort

1

Ein Verfahren verwendet row_number() oder rank() (je nachdem, wie Sie wollen, Verbindungen zu handhaben):

select t.* 
from (select t.*, 
      row_number() over (partition by date order by score desc) as seqnum 
     from test_anna t 
    ) t 
where seqnum <= 5;