不同类别最高值的平均值
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 有列 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
请注意,window 函数仅在 MySQL 8.0 中可用。
我有一个 table,包含 3 个字段、旅游景点、他们所在的国家以及游客对这个地方的平均评分。我想根据不同国家/地区顶级旅游景点的平均评分来比较它们。我用 MySQL
基本上是这样的:
Eiffel Tower | France | 4,2
Trakoscan Castle | Croatia | 4,6
例如,法国 5 个最佳旅游景点的平均笔记与克罗地亚 5 个最佳旅游景点的平均笔记相比如何。我知道如何计算一个国家/地区所有地点的平均值并进行比较,但我不知道如何将 LIMIT 和 GROUP BY
组合起来感谢您的帮助。
您可以使用 window 函数过滤每个国家/地区的前 5 个音符,然后汇总。
假设您的 table 有列 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
请注意,window 函数仅在 MySQL 8.0 中可用。