Sql 按月份排名前5名(月份为varchar)

Sql 按月份排名前5名(月份为varchar),sql,Sql,假设我有这张桌子 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

假设我有这张桌子

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
我想返回前5名的分数,并注明日期

我喜欢的输出:

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
....        ...        .....
我尝试了一些查询,结果很少

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
如何使用mysql语句实现这一点? 谢谢

一种方法根据您想要处理领带的方式使用行号或排名:

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;

用您正在使用的数据库标记您的问题。