나는 XY 좌표 집합에서 가장 멀리 떨어진 곳에서 발생한 모든 목격을 검색하려고하는데 최대 거리를 부여한 이전 쿼리의 첫 번째 행을 검색 할 수있었습니다. 그러나 동일한 좌표에서 목격이 발생하면 다중 최대 값을 처리 할 수있는 기능이 없습니다.최대 값 가져 오기
WITH params as (
SELECT -28 as lat, 151 as lon
FROM dual
)
SELECT sighting_id, sqrt(power(lat - latitude, 2) + power(lon - longitude, 2)
)
AS distance
FROM sightings CROSS JOIN params
WHERE sqrt(power(lat - latitude, 2) + power(lon - longitude, 2)) =
(select * from (select sighting_id,
sqrt(power(lat - latitude, 2) + power(lon - longitude, 2))
FROM sightings CROSS JOIN params
ORDER BY sqrt(power(lat - latitude, 2) + power(lon - longitude, 2)) desc)
WHERE rownum <= 1);
그리고 :
IV는 최대 값 (들)을 얻으려고 노력에서 두 개의 서로 다른 접근 방식을 시도
WITH params as (
SELECT -28 as lat, 151 as lon
FROM dual
)
SELECT sighting_id, sqrt(power(lat - latitude, 2) + power(lon - longitude, 2)
)
AS distance
FROM sightings CROSS JOIN params
WHERE sqrt(power(lat - latitude, 2) + power(lon - longitude, 2)) =
(SELECT MAX(sqrt(power(lat - latitude, 2) + power(lon - longitude, 2)))
FROM sightings CROSS JOIN params);
첫 번째 방법이 너무 많은 값을 말하는 오류, 두 번째는 말한다 유클리드 거리에 대해 MAX()를 사용할 수 없습니다. 어떻게 극복합니까?
귀하의 질문이 명확하게 표현하지 쉽게 이해되지 않는다. 당신이 무엇을 원하는지 명확히하고 사람들이 쉽게 쿼리를 얻을 수 있도록 스키마/테이블을 추가 할 수 있다면 좋을 것입니다. senario에 대해 아무 것도 모르는 사람의 관점에서 생각하십시오. –
이 더 낫습니까? – 101ldaniels
'sightings' 테이블의 데이터는 어디에 있습니까? 첫 번째'SELECT' 전에'WITH' 문 안에 샘플 데이터로 정의해야합니다. 그건 그렇고, 두 번째 방법은 나를 위해 작동합니다. – ozy