mysql - 不同类别的最高值的平均值
问题描述
我有一张桌子,上面有 3 个字段、旅游景点、他们所在的国家以及游客对这个地方的平均评分。我想根据不同国家/地区的热门旅游景点的平均评分来比较它们。我使用 MySQL
它基本上看起来像这样:
Eiffel Tower | France | 4,2
Trakoscan Castle | Croatia | 4,6
例如,法国 5 个最佳旅游景点的平均笔记与克罗地亚 5 个最佳旅游景点的平均笔记相比如何。我知道如何平均一个国家的所有地方并进行比较,但我不知道如何结合 LIMIT 和 GROUP BY
谢谢您的帮助。
解决方案
您可以使用窗口函数过滤每个国家/地区的前 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 中可用。
推荐阅读
- python - 如何在 python 编码中重复用户输入?
- javascript - 发出贝宝订阅 API 请求以获取服务器上的订阅信息 - 身份验证包装器?
- asp.net - 如何检查用户会话并在每个页面上即时重新创建一个?
- spring-boot - Swagger codegen Maven 插件在 SpringBoot 中没有生成正确的 dateFormat java.time.LocalDate
- c++ - 如果 sizeof(T) 大于 std::deque 中的块大小怎么办
? - spartacus-storefront - 将默认页面更改为登录
- javascript - 我刚刚在导航栏中添加了汉堡包按钮,但它现在不起作用?
- mysql - 数据库上的 i/o 如何与查询类型相关
- linux - cut -f 多个参数
- c# - 如何每 n 分钟/小时/天使用 Hangfire 运行后台作业