表名为c_list
。
Country City Rating Date
------------------------------------
France Brest 95 24092016
France Brest 98 27092016
France Brest 95 03102016
France Lille 100 26092016
France Lille 92 28092016
Japan Tokyo 98 02102016
有50多个不同的国家,每个国家的城市都很少。每个城市可能有多行记录或更多。我想选择一个具有最高平均评级的城市(与其所在国家/地区的城市比较),然后与不同国家/地区的所有其他城市进行比较。因此,最终查询应显示所有国家及其 ONE City ,其中包含max(平均值(评级))和desc顺序。样本输出:
Country City max(avg(rating))
-------------------------------------
USA New York 97.25
UK Cardiff 96.70
Germany Greven 96.50
Turkey Afyon 94.88
France Guipavas 94.10
Canada Cartwright 91.35
我只能获得一个国家的最高(平均(评级))。需要帮助。
SELECT top 1 country, city, Avg(rating) AS Ratings
FROM c_list
where country = 'France'
GROUP BY city, country
order by Ratings desc
(已编辑)我想要的结果与世界小姐比赛相似。首先竞争并赢得您所在国家的本地选手。接下来(我的最终结果集)是与来自其他国家的获胜者竞争,并使用他们在自己的国家食用的平均值(等级)将他们排在第一位。
答案 0 :(得分:1)
如果没有错,你正在寻找这个
SELECT country,
city,
Avg(rating) AS Ratings
FROM c_list A
GROUP BY city,
country
HAVING Avg(rating) = (SELECT TOP 1 Avg(rating) AS Ratings
FROM c_list B
WHERE a.country = b.country
GROUP BY city
ORDER BY ratings DESC)
ORDER BY ratings DESC
注意:如果您使用Mysql
,则将TOP
关键字替换为LIMIT
答案 1 :(得分:0)
基准表:
从temp_lax t中选择t。* 国家城市评级 1法国布雷斯特95 2法国布雷斯特98 3法国布雷斯特95 4法国里尔100 5法国里尔92 6日本东京98
查询:
选择t1.country,t1.city,Avg(t1.Rating)评级 来自temp_lax t1 由t1.country,t1.city组成 有平均(t1.rating)=(选择最大(平均(评级)) 来自temp_lax t2 在哪里t1.country = t2.country GROUP BY t2.city) 通过评级desc排序
输出: 国家城市评级 1日本东京98 2法国里尔96 3法国布雷斯特96
如果您正在寻找不同的结果集,请告诉我。