表名为 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多个不同的国家,每个国家几乎没有城市。而每个城市可能都有一行以上的记录。我想选择一个平均评分最高的城市**(与本国的城市进行比较),然后与不同国家的所有其他城市进行比较。因此,最终的查询应该以max(avg(rating))和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
我想要的结果和世界小姐大赛差不多。先和你们国家的本地选手比赛并获胜。下一步(我的最终结果集)是与其他国家的优胜者竞争,并用他们在本国吃得更多的平均分(rating)对他们进行排名。
2条答案
按热度按时间mrzz3bfm1#
基表:
选择t.*从temp\u lax t country city rating 1 france brest 95 2 france brest 98 3 france brest 95 4 france lille 100 5 france lille 92 6 japan tokyo 98
查询:
从temp\u lax t1 group by t1.country中选择t1.country,t1.city,avg(t1.rating)rating,t1.city having avg(t1.rating)=(从temp\u lax t2中选择max(avg(rating)),其中t1.country=t2.country group by t2.city)order by rating desc
输出:乡村城市评级1日本东京98 2法国里尔96 3法国布雷斯特96
请让我知道,如果你正在寻找不同的结果集。
aiazj4mn2#
如果我没有错的话,你在找这个
注意:如果您正在使用
Mysql
替换TOP
关键字LIMIT