【发布时间】:2018-11-04 03:27:31
【问题描述】:
我正在处理 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 语句正在查找每个大陆的面积为 MAX 的国家,不是吗?
对此的实际解决方案如下:
SELECT continent, name, area
FROM world x
WHERE area >= ALL
(SELECT area
FROM world y
WHERE y.continent=x.continent
AND area>0)
但这似乎是一种复杂的方法;;这种方式最有意义吗?任何想法表示赞赏
提前谢谢你!!
【问题讨论】:
标签: mysql sql greatest-n-per-group