Im Versuch, alle Sichtungen abzurufen, die am weitesten von einer Reihe von XY-Koordinaten entfernt sind, konnte ich die erste Zeile in einer vorherigen Abfrage abrufen, die den maximalen Abstand angibt. Es war jedoch nicht in der Lage, mehrere Maximalwerte zu verarbeiten, wenn Sichtungen an den gleichen Koordinaten auftraten.Ermitteln des Maximalwerts
Iv versucht, zwei verschiedene Ansätze bei Versuch, den Maximalwert (s) zu erhalten:
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);
Und:
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);
der erste Fehler Art und Weise zu viele Werte zu sagen, und die zweiten sagt Ich kann den MAX() über den euklidischen Abstand nicht benutzen. Wie überwinde ich das?
Ihre Frage ist nicht eindeutig ausgedrückt und nicht leicht zu verstehen. Bitte erklären Sie, was Sie tun möchten, und es wäre auch großartig, wenn Sie das Schema/die Tabellen hinzufügen könnten, damit die Leute Ihre Anfrage leicht bekommen. Denken Sie aus der Perspektive einer Person, die nichts über das Senario weiß. –
ist das besser? – 101ldaniels
Wo sind die Daten der Sichtungs-Tabelle? Sie sollten es mit einigen Beispieldaten innerhalb der 'WITH'-Anweisung vor dem ersten' SELECT' definieren. Übrigens funktioniert dein zweiter Weg für mich. – ozy