我在mysql数据库中遇到了一个问题,我需要得到一个高于平均值的字段吗



我遇到了一个问题,即每个国家的城市数量超过平均水平。让我解释一下我的问题,我有一个名为"城市"的表,其中有一个列名为"国家",从中我可以计算出每个国家的城市数量,然后我计算出城市总数的平均值,得到每个国家大约13个城市。最后,我需要计算一下,或者得到那些城市比平均水平多10%的国家?

这是我的问题:

select avg(country_city_counts.numberofcities) as average -- getting average
from
(
select Country, count(*) as numberofcities -- getting number of cities per  country    
from city
group by Country
order by Country
) country_city_counts

您可以使用窗口函数:

select c.*
from (select Country, count(*) as numberofcities,
avg(count(*)) over () as avg_numberofcities
from city
group by Country
) c
where numberofcities > numberofcities * 1.1
order by Country

最新更新