Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 不同类别最高值的平均值_Mysql_Sql_Average_Greatest N Per Group - Fatal编程技术网

Mysql 不同类别最高值的平均值

Mysql 不同类别最高值的平均值,mysql,sql,average,greatest-n-per-group,Mysql,Sql,Average,Greatest N Per Group,我有一张表,上面有3个领域,旅游景点,他们所在的国家和游客对这个地方的平均评价。我想根据不同国家顶级旅游景点的平均评级来比较它们。我使用MySQL 基本上是这样的: Eiffel Tower | France | 4,2 Trakoscan Castle | Croatia | 4,6 例如,法国5个最佳旅游地的平均音符与克罗地亚5个最佳旅游地的平均音符相比如何。我知道如何对一个国家的所有地方进行平均并进行比较,但我不知道如何将限制和分组相结合 感谢您的帮助。您可以使用窗口功能筛选每

我有一张表,上面有3个领域,旅游景点,他们所在的国家和游客对这个地方的平均评价。我想根据不同国家顶级旅游景点的平均评级来比较它们。我使用MySQL

基本上是这样的:

Eiffel Tower     | France  | 4,2
Trakoscan Castle | Croatia | 4,6
例如,法国5个最佳旅游地的平均音符与克罗地亚5个最佳旅游地的平均音符相比如何。我知道如何对一个国家的所有地方进行平均并进行比较,但我不知道如何将限制和分组相结合


感谢您的帮助。

您可以使用窗口功能筛选每个国家/地区前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中提供窗口函数。

是小数点的符号吗?是的,在法国,它是逗号而不是小数点,我在写此问题时忘记更改它^^^谢谢您的帮助。为了能够使用窗口函数,我不得不将MySQL更新到一个更新的版本,但后来它成功了。