我必须编写一个查询,该查询将返回所有客户超过所有城市平均客户数量的所有城市。对于每个这样的城市,返回国家名称,城市名称和客户数量。 按国家/地区名称升序排列结果。
输出应为
国家名,城市名,计数
我尝试使用子查询,但出现错误
Select country_name, city_name, count(customer_name)
from country
inner join city on city.country_id = country.id
inner join customer on customer.city_id = city.id
where customer_name > (select avg(customer_name)
from customer
inner join customer on customer.city_id = city.id group by id)
group by 1, 2
然后我尝试
Select country.country_name, city.city_name, count(customer.customer_name)
from country
inner join city on city.country_id = country.id
inner join customer on customer.city_id = city.id
group by country.country_name, city.city_name
having count(customer.customer_name) >
(
Select count(customer.customer_name) / count(city.city_name) as avg_per_city
from city
inner join customer on customer.city_id = city.id
)
但这也给出了错误。
您的帮助会很棒。
答案 0 :(得分:0)
第二个查询看起来几乎正确。由于城市ID是唯一的,因此您在计算平均值时无需加入城市表。
尝试一下:
Select country.country_name, city.city_name, count(customer.customer_name)
from country
inner join city on city.country_id = country.id
inner join customer on customer.city_id = city.id
group by country.country_name, city.city_name
having count(customer.customer_name) >
(
Select count(customer.customer_name) / count(distinct city_id) as avg_per_city
from customer
)