首页 > 代码库 > sqlzoo.net刷题4
sqlzoo.net刷题4
SELECT name, continent FROM world aWHERE population > (SELECT MAX(population) * 3 FROM world b WHERE a.continent = b.continent AND a.name <> b.name)
http://dba.stackexchange.com/questions/4066/cant-retrieve-data-of-countries-and-regions
老外也有在论坛为这题发愁的,幸好下面有人解答,我找着思路把这题给抄了
题目问题是:
Some countries have populations more than three times that of any of their neighbours (in the same continent). Give the countries and continents.
找到那些国家超出每个邻居国家人口3倍以上,按理说这种题,用过程化语言其实相当容易解答的,排序之后直接找到第一大的元素与第二大的元素进行比较就好了,
不过SQL还是复杂并且难以理解。
这题的主要在于子查询,这里一定要搞清楚的一个问题是 集聚函数是在where语句完成之后,再进行计算的,也就是说子查询中的MAX函数是在排除
外部查询当前国家之后 进行集聚,找到人口最多的国家并将其×3与外部查询的人口进行比较。
sqlzoo.net刷题4
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。