我有一张表,上面有3个地方,旅游景点,他们所在的国家,以及游客对这个地方的平均评分。我想根据顶级旅游景点的平均评分来比较不同的国家。我使用MySQL
它看起来基本上是这样的:
Eiffel Tower | France | 4,2
Trakoscan Castle | Croatia | 4,6
例如,法国5个最佳旅游景点的音符平均值如何与克罗地亚5个最佳旅游景点的音符平均值进行比较。我知道如何对一个国家的所有地方进行平均,然后进行比较,但我不知道如何结合限制和分组。
谢谢你的帮助。
发布于 2020-11-06 17:18:42
您可以使用窗口函数筛选每个国家/地区的前5个注释,然后聚合。
假设您的表具有列country
、place
和rating
,您可以将查询表述为:
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
请注意,窗口函数仅在MySQL 8.0中可用。
https://stackoverflow.com/questions/64711806
复制相似问题