Verfügt Presto SQL wirklich über die TOP X-Funktionalität in SELECT-Anweisungen?Wählen Sie Top # in Presto SQL?
Wenn ja, gibt es in der Zwischenzeit einen Workaround?
Verfügt Presto SQL wirklich über die TOP X-Funktionalität in SELECT-Anweisungen?Wählen Sie Top # in Presto SQL?
Wenn ja, gibt es in der Zwischenzeit einen Workaround?
Wenn Sie wollen einfach nur die Anzahl der Zeilen in der Ergebnismenge zu begrenzen, können Sie LIMIT
, mit oder ohne ORDER BY
:
SELECT department, salary
FROM employees
ORDER BY salary DESC
LIMIT 10
Wenn Sie die Top-Werte pro Gruppe möchten, Sie können die Standard-SQL row_number()
Fensterfunktion verwenden. Zum Beispiel, um die Top-3-Mitarbeiter pro Abteilung nach Gehalt zu erhalten:
SELECT department, salary
FROM (
SELECT department, salary row_number() OVER (
PARTITION BY department
ORDER BY salary DESC) AS rn
FROM employees
)
WHERE rn <= 3
Für alle anderen ist das so nah wie bei Presto.Yeah, das ist, was ich getan habe. Mit TOP N wird die Abfrage sowohl schneller als auch einfacher lesbar. Ich hatte es mit großen Datenmengen zu tun und versuchte Speichergrenzen zu vermeiden. Lief den Code mehrere Male für Teilmengen der Daten und aggregierte sie dann wieder zusammen. Vielen Dank! –
Ew. Es aß meine ziemlich hübsche Formatierung. Haha! Nochmals vielen Dank, David! –
Meinst du ORDER BY mit LIMIT? –
Das sind eigentlich zwei verschiedene Dinge. –
Meistens funktioniert TOP N genauso wie ORDER BY mit LIMIT, aber ich arbeite innerhalb eines Edge-Falls, wo dies nicht der Fall ist. Naja. :/ –