我正在处理sqlzoo的一个实践问题,我不知道为什么我尝试的解决方案不起作用,因为它对我来说是有意义的。
这是表格的格式:
-------------------------------------------------------------
| name continent area population gdp |
|-------------------------------------------------------------|
| Afghanistan Asia 652230 25500100 20343000000 |
| . |
| . |
| . |
| |
-------------------------------------------------------------
问题如下:
找出每个大陆上最大的国家(按地区),显示大陆、名称和地区。
我是这么想的:
SELECT continent, name, area FROM world
WHERE name IN (SELECT continent, name, MAX(area) FROM world
GROUP BY continent);
我知道这样不行,但为什么不行?似乎嵌套的select语句正在查找每个大陆面积最大的国家,不是吗?
实际的解决方案如下:
SELECT continent, name, area FROM world x
WHERE area >= ALL
(SELECT area FROM world y
WHERE y.continent=x.continent
AND area>0)
但这似乎是一个复杂的方法;;这样最合理吗?有什么想法都可以
提前谢谢!!
2条答案
按热度按时间icnyk63a1#
rekjcdws2#
一眼望去,这个查询似乎是有效的
演示1
考虑到目前的数据,一些问题将提出,而一些其他新的记录,如在下面的演示增加。而不是上面提到的:
演示2