Wenn Sie Ihre Abfrage im SQL-Editor eingeben oder eine Berechnungerstellen, verwenden Sie Presto SQL-Syntax. Im SQL-Editor können Sie beispielsweise eine vollständige SELECT
Abfrage erstellen, um die einzubeziehenden Quellen zu finden und dann deren Daten zu filtern:
SELECT DISTINCT column, AGG_FUNC(column_or_expression), ... FROM source JOIN another_source ON source.column = another_source.column WHERE constraint_expression GROUP BY column HAVING constraint_expression ORDER BY column ASC/DESC LIMIT count OFFSET COUNT
Hinweis: Um die Datenintegrität zu gewährleisten, unterstützt der SQL-Editor Nur-Lese-Anweisungen wie SELECT
, aber nicht Lese-/Schreib-Anweisungen wie INSERT
oder DELETE
.
Zusätzlich zu diesen Klauseln und Anweisungen kann Ihre SQL-Syntax mehrere Funktionen und Operatoren enthalten, um die Ergebnisse weiter zu definieren und Berechnungen durchzuführen:
- Text-String-Funktionen
- Funktionen für Datum und Uhrzeit
- Umrechnungsfunktionen
- Bedingte Ausdrücke
- Aggregierte und mathematische Funktionen und Operatoren
- JSON-Funktionen
- Vergleichsfunktionen und -operatoren
Reihenfolge der Maßnahmen
Zwar enthält nicht jede Abfrage jede Klausel, doch wird jeder Teil der SQL-Anweisung in einer bestimmten Reihenfolge ausgeführt:
-
FROM
undJOIN
, um die Quellen der abgefragten Daten zu ermitteln -
WHERE
, um nur Daten zu berücksichtigen, die bestimmte Kriterien erfüllen -
GROUP BY
, um Daten auf der Grundlage gemeinsamer Werte zusammenzufassen -
HAVING
, um nur Daten aus aggregierten Zeilen einzuschließen, die bestimmte Kriterien erfüllen -
SELECT
oderSELECT DISTINCT
, um weiter zu spezifizieren, welche Quelldaten einbezogen werden sollen -
ORDER BY
, um anzugeben, wie die Daten in den Ergebnissen sortiert werden sollen -
LIMIT
undOFFSET
, um anzugeben, wie viele und welche Datensätze aus der Abfrage einbezogen werden sollen
Das Verständnis der Reihenfolge, in der die Abfrage ihre SQL-Syntax ausführt, kann Ihnen helfen, die bei jedem Schritt verfügbaren Ergebnisse zu ermitteln.
FROM
und JOIN
Um die abgefragten Daten zu bestimmen, führt die Abfrage zunächst den Befehl FROM
aus, der die Quelle angibt, aus der Daten ausgewählt werden sollen.
Um Daten aus mehreren Quellen einzubeziehen, fügen Sie eine JOIN
Klausel ein, um die Zeilen der Quellen auf der Grundlage einer verwandten Spalte zu kombinieren:
-
INNER JOIN
wählt Datensätze aus, die in mit beiden Quellen übereinstimmen. -
LEFT JOIN
wählt alle Datensätze aus der linken Quelle und auch alle übereinstimmenden Datensätze in der rechten Quelle aus. -
RIGHT JOIN
wählt alle Datensätze aus der rechten Quelle aus und auch alle, die in der linken Quelle übereinstimmen. -
FULL JOIN
wählt alle Datensätze in oder aus.
Um Daten aus mehr als zwei Quellen zusammenzustellen, können Sie mehrere JOIN
Klauseln anwenden, um die Quellen der Reihe nach zu kombinieren. Zum Beispiel, um Aufträge mit Daten über ihre Kunden und Versender zu kombinieren:
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName FROM ((Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID) INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID)
Hinweis: In Query Builder erstellen Sie eine JOIN
Klausel als Beziehung.
WHERE
Nachdem die Abfrage ihre Quellen auf der Grundlage der Klauseln FROM
und JOIN
bestimmt hat, führt sie die Klausel WHERE
aus, um die Ergebnisse auf Daten zu beschränken, die bestimmte Kriterien erfüllen.
GROUP BY
Wenn die Abfrage Aggregatfunktionen enthält, kann sie eine GROUP BY
Anweisung enthalten, um ihre Zeilen auf der Grundlage gemeinsamer Werte in der angegebenen Spalte zusammenzufassen, z. B. GROUP BY column name(s)
.
HABEN
Wenn die Abfrage eine GROUP BY
Anweisung enthält, werden die Beschränkungen der HAVING
Klausel angewendet. Ähnlich wie bei WHERE
, HAVING
werden nur Daten aus aggregierten Zeilen aufgenommen, die die spezifischen Kriterien erfüllen, und alle anderen Zeilen werden verworfen.
SELECT
oder SELECT DISTINCT
Nachdem die Abfrage die Einschränkungen der WHERE
-Klausel auf die Quellen anwendet, die durch die FROM
- und JOIN
-Klauseln bestimmt wurden, und die Zeilen auf der Grundlage der GROUP BY
-Anweisung und der HAVING
-Klausel gruppiert, wendet sie alle Ausdrücke in der SELECT
-Anweisung an, um die einzuschließenden Daten weiter zu spezifizieren. Hier einige Beispiele:
-
SELECT spalte1, spalte2 FROM quelle
gibt nur die Felderspalte1
undspalte2
ausquelle
zurück. -
SELECT * FROM source
liefert alle Felder vonsource
.
Wenn die Abfrage eine SELECT DISTINCT
Anweisung enthält, schließt sie alle Zeilen mit doppelten Werten aus jeder Spalte aus.
ORDER BY
Wenn die Abfrage das Schlüsselwort ORDER BY
enthält, werden die Ergebnisse in aufsteigender oder absteigender Reihenfolge sortiert -ASC
oder DESC
- basierend auf der angegebenen Spalte. Zum Beispiel: ORDER BY field_header ASC
.
Um nach mehreren Feldern zu sortieren, trennen Sie diese mit einem Komma, z. B. ORDER BY field_header1 ASC, field_header2 DESC
.
Hinweis: Der Standardwert von ORDER BY
ist ASC
. Wenn Sie ASC
oder DESC
nach dem Feldnamen in der Anweisung ORDER BY
nicht angeben, wird automatisch in aufsteigender Reihenfolge sortiert.
LIMIT
und OFFSET
Schließlich verwirft die Abfrage alle Zeilen, die außerhalb des Bereichs der Klauseln LIMIT
und OFFSET
liegen.
- Um eine bestimmte Anzahl von Datensätzen in den Ergebnissen zurückzugeben, fügen Sie eine
LIMIT
Klausel ein. Um zum Beispiel die ersten 30 Datensätze aus einer Quelle zurückzugeben,SELECT * FROM source LIMIT 30
. - Um eine bestimmte Anzahl von Datensätzen zurückzugeben, aber nicht mit dem ersten Datensatz in der Quelle zu beginnen, fügen Sie eine
OFFSET
Klausel mit der Anzahl der zu überspringenden Datensätze hinzu. Um zum Beispiel zehn Datensätze beginnend mit dem 16. zurückzugeben,SELECT * FROM source LIMIT 10 OFFSET 15.