我正在尝试编写一个查询,以获得最流行歌曲的最高分数,按歌曲流行顺序排列。
我有一个名为“gameplay”的表格,其中包含以下字段:
到目前为止,我最接近的是:
SELECT id, song_id, score
FROM (
SELECT id, song_id, score
FROM (
SELECT id, song_id, score
FROM gameplay
ORDER BY score DESC
) AS all_scores_in_order
GROUP BY song_id
) AS top_scores_per_song
ORDER BY FIELD (song_id, 3,1,2)
但我希望ORDER BY FIELD
中的值由另一个子查询生成 - 按受欢迎程度排序的song_id(按照计算表中行出现的顺序),即。
SELECT song_id
FROM gameplay
GROUP BY song_id
ORDER BY count( id ) DESC
答案 0 :(得分:1)
你不能只是在外部查询中按Count(id)分组然后排序吗?
这应显示按出现次数排序的所有排序,并显示最高得分:
SELECT song_id, COUNT(id), MAX(score)
FROM gameplay
GROUP BY song_id
ORDER count(id) DESC
或者您希望每首song_id多次出现?