为什么all(select)不能获得最大值

ttisahbt  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(531)

我在hackerrank的15号气象观测站工作(hackerrank问题)
它问
查询西经(long\u w)以查找站点中小于137.2345的最大北纬(lat\n)。把你的答案四舍五入到小数位。
station表有5列:id、city、state、lat\n、long\w。
下面是我的问题,我试图找出为什么它不起作用。

SELECT ROUND(LONG_W, 4) FROM STATION
WHERE LAT_N >= ALL(SELECT LAT_N FROM STATION WHERE LAT_N < '137.2345')

当我尝试一个不同的查询,这是工作

SELECT ROUND(LONG_W, 4) FROM STATION
WHERE LAT_N = (SELECT MAX(LAT_N) FROM STATION WHERE LAT_N < '137.2345')

第一个查询有什么问题?谢谢。

elcex8rz

elcex8rz1#

此查询:

SELECT ROUND(LONG_W, 4) FROM STATION
WHERE LAT_N >= ALL(SELECT LAT_N FROM STATION WHERE LAT_N < '137.2345')

将返回其中的所有行 LAT_N 大于或等于 '137.2345' 因为它缺少一个附加条件。
应该写为:

SELECT ROUND(LONG_W, 4) FROM STATION
WHERE LAT_N <  '137.2345'
  AND LAT_N >= ALL(SELECT LAT_N FROM STATION WHERE LAT_N < '137.2345')

相关问题