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;
用您正在使用的数据库标记您的问题。