Kiedy wprowadzasz zapytanie w Edytorze SQL lub tworzysz kalkulację, używasz składni Presto SQL. Na przykład w edytorze SQL możesz utworzyć kompletne zapytanie SELECT, aby znaleźć źródła do uwzględnienia, a następnie przefiltrować ich dane:
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
Uwaga: Aby zapewnić integralność danych, edytor SQL obsługuje instrukcje tylko do odczytu, takie jak SELECT, ale nie do odczytu/zapisu, takie jak INSERT lub DELETE.
Oprócz tych klauzul i instrukcji, twoja składnia SQL może zawierać kilka funkcji i operatorów do dalszego definiowania wyników i wykonywania obliczeń:
- Funkcje ciągów tekstowych
- Funkcje daty i godziny
- Funkcje konwersji
- Wyrażenia warunkowe
- Funkcje i operatory agregujące i matematyczne
- Funkcje JSON
- Funkcje i operatory porównania
Kolejność operacji
Chociaż nie każde zapytanie zawiera każdą klauzulę, każda część instrukcji SQL jest wykonywana w określonej kolejności:
-
FROMiJOIN, aby określić źródła danych będących przedmiotem zapytania -
WHERE, aby uwzględnić tylko dane spełniające określone kryteria -
GROUP BY, aby podsumować dane na podstawie wspólnych wartości -
HAVING, aby uwzględnić tylko dane z zagregowanych wierszy, które spełniają określone kryteria -
SELECTlubSELECT DISTINCT, aby dodatkowo określić, które dane źródłowe mają zostać uwzględnione -
ORDER BY, aby określić sposób sortowania danych w wynikach -
LIMITiOFFSET, aby określić, ile i które rekordy z zapytania mają zostać uwzględnione
Zrozumienie kolejności, w jakiej zapytanie wykonuje swoją składnię SQL, może pomóc Ci zidentyfikować wyniki dostępne na każdym etapie.
FROM and JOIN
Aby określić dane, zapytanie najpierw wykonuje polecenie FROM, które określa źródło, z którego mają zostać wybrane dane.
Aby uwzględnić dane z wielu źródeł, dołącz klauzulę JOIN w celu połączenia wierszy źródeł na podstawie powiązanej kolumny:
-
INNER JOINwybiera rekordy dopasowane w obu źródłach. -
LEFT JOINwybiera wszystkie rekordy z lewego źródła, a także wszystkie dopasowane w prawym źródle. -
RIGHT JOINwybiera wszystkie rekordy z prawego źródła, a także wszystkie dopasowane w lewym źródle. -
FULL JOINwybiera wszystkie rekordy w źródle lub.
Aby skompilować dane z więcej niż dwóch źródeł, możesz zastosować wiele klauzul JOIN, aby połączyć źródła w kolejności. Na przykład, aby połączyć zamówienia z danymi o swoich klientach i nadawcach:
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)
Uwaga: W Query Builder tworzysz klauzulę JOIN jako relację .
GDZIE
Po tym, jak zapytanie określi swoje źródła na podstawie klauzul FROM i JOIN, wykonuje klauzulę WHERE, aby odfiltrować wyniki tylko do danych spełniających określone kryteria.
GROUP BY
Jeśli zapytanie zawiera funkcje agregujące, może zawierać instrukcję GROUP BY w celu podsumowania wierszy na podstawie wspólnych wartości w określonej kolumnie, np. GROUP BY nazwa(y) kolumny.
POSIADANIE
Jeśli zapytanie zawiera instrukcję GROUP BY, stosuje ograniczenia klauzuli HAVING. Podobnie jak w przypadku WHERE, HAVING zawiera tylko dane z zagregowanych wierszy, które spełniają określone kryteria i odrzuca wszystkie wiersze, które ich nie spełniają.
SELECT lub SELECT DISTINCT
Po tym, jak zapytanie zastosuje ograniczenia klauzuli WHERE do źródeł określonych przez klauzule FROM i JOIN oraz pogrupuje wiersze na podstawie instrukcji GROUP BY i klauzuli HAVING, zastosuje wszelkie wyrażenia w instrukcji SELECT w celu dalszego określenia danych do uwzględnienia. Na przykład:
-
SELECT column1, column2 FROM sourcezwraca tylko polacolumn1icolumn2zsource. -
SELECT * FROM źródłozwraca wszystkie pola zźródło.
Jeśli zapytanie zawiera instrukcję SELECT DISTINCT, wyklucza wszystkie wiersze ze zduplikowanymi wartościami z każdej kolumny.
ORDER BY
Jeśli zapytanie zawiera słowo kluczowe ORDER BY, sortuje wyniki w porządku rosnącym lub malejącym -ASC lub DESC- na podstawie określonej kolumny. Na przykład, ORDER BY field_header ASC.
Aby sortować według wielu pól, oddziel każde z nich przecinkiem, np. ORDER BY field_header1 ASC, field_header2 DESC.
Uwaga: Domyślną wartością ORDER BY jest ASC. Jeśli nie określisz ASC lub DESC po nazwie pola w instrukcji ORDER BY, automatycznie sortuje w porządku rosnącym.
LIMIT i OFFSET
Na koniec zapytanie odrzuca wszystkie wiersze, które wykraczają poza zakres klauzul LIMIT i OFFSET.
- Aby zwrócić określoną liczbę rekordów w wynikach, dołącz klauzulę
LIMIT. Na przykład, aby zwrócić pierwsze 30 rekordów ze źródła,SELECT * FROM source LIMIT 30. - Aby zwrócić określoną liczbę rekordów, ale nie zaczynać od pierwszego rekordu w źródle, dodaj klauzulę
OFFSETz liczbą rekordów do pominięcia. Na przykład, aby zwrócić dziesięć rekordów zaczynających się od 16,SELECT * FROM source LIMIT 10 OFFSET 15.