不同类别最高值的平均值

Average values of the top values for different categories

我有一个 table,包含 3 个字段、旅游景点、他们所在的国家以及游客对这个地方的平均评分。我想根据不同国家/地区顶级旅游景点的平均评分来比较它们。我用 MySQL

基本上是这样的:

Eiffel Tower     | France  | 4,2
Trakoscan Castle | Croatia | 4,6

例如,法国 5 个最佳旅游景点的平均笔记与克罗地亚 5 个最佳旅游景点的平均笔记相比如何。我知道如何计算一个国家/地区所有地点的平均值并进行比较,但我不知道如何将 LIMIT 和 GROUP BY

组合起来

感谢您的帮助。

您可以使用 window 函数过滤每个国家/地区的前 5 个音符,然后汇总。

假设您的 table 有列 countryplacerating,您可以将查询表述为:

select country, avg(rating) avg_rating_top5
from (
    select t.*,
        row_number() over(partition by country order by rating desc) rn
    from mytable t
) t
where rn <= 5
group by country

请注意,window 函数仅在 MySQL 8.0 中可用。