【发布时间】:2017-02-22 12:37:41
【问题描述】:
我正在尝试在 Oracle Express Edition 数据库上运行以下查询。
SELECT SIGHTING_ID, MAX(DISTANCE)
FROM
(
SELECT SIGHTING_ID,
SQRT(POWER(LATITUDE + 28, 2) + POWER(LONGITUDE - 151, 2)) AS DISTANCE
FROM SIGHTINGS
)
GROUP BY SIGHTING_ID;
查询的目的是返回距离坐标(-28, 151)最大距离的瞄准的 SIGHTING_ID 和 DISTANCE
SIGHTINGS表的描述如下
desc SIGHTINGS
Name Null? Type
----------------------------------------- -------- ----------------------------
SIGHTING_ID NOT NULL NUMBER
SPOTTER_ID NUMBER
BIRD_ID NUMBER
LATITUDE NUMBER
LONGITUDE NUMBER
SIGHTING_DATE DATE
DESCRIPTION VARCHAR2(255)
当我运行查询而不是选择最大距离时,它会选择并显示整个目击事件列表及其各自的距离。 SIGHTINGS 有大量的元组,但下面是当前输出的一小部分列表
SIGHTING_ID MAX(DISTANCE)
----------- -------------
264172 2.01556444
264174 2.34029913
264180 2.87647354
264198 .637887137
264205 2.08568933
264211 .232594067
264215 2.34104677
264221 .75
264224 .148660687
264235 .684470598
我的问题是如何使 MAX 聚合函数起作用,以便它只返回最大距离和尊重 SIGHTING_ID?
【问题讨论】:
标签: sql oracle select max aggregate-functions