Wanneer u uw query invoert in de SQL Editor of een berekening maakt, gebruikt u Presto SQL syntaxis. In de SQL-editor kunt u bijvoorbeeld een volledige SELECT query samenstellen om de op te nemen bronnen te vinden en vervolgens hun gegevens te filteren:
SELECT DISTINCT kolom, AGG_FUNC(kolom_of_expressie), ... FROM bron JOIN andere_bron OP bron.kolom = andere_bron.column WHERE constraint_expression GROUP BY column HAVING constraint_expression ORDER BY column ASC/DESC LIMIT count OFFSET COUNT
Opmerking: Om de gegevensintegriteit te waarborgen, ondersteunt de SQL-editor alleen-lezen opdrachten zoals SELECT, maar niet lees-/schrijfopdrachten zoals INSERT of DELETE.
Naast deze clausules en verklaringen kan uw SQL syntaxis verschillende functies en operatoren bevatten om de resultaten verder te definiëren en berekeningen uit te voeren:
- Tekststring functies
- Datum- en tijdfuncties
- Conversiefuncties
- Voorwaardelijke uitdrukkingen
- Geaggregeerde en wiskundige functies en operatoren
- JSON-functies
- Vergelijkingsfuncties en -operatoren
Volgorde van bewerkingen
Hoewel niet elke query elke clausule bevat, wordt elk deel van de SQL-instructie in een bepaalde volgorde uitgevoerd:
-
FROMenJOIN, om de bronnen van de opgevraagde gegevens te bepalen -
WHERE, om alleen gegevens op te nemen die aan specifieke criteria voldoen -
GROUP BY, om gegevens samen te vatten op basis van gemeenschappelijke waarden -
HAVING, om alleen gegevens op te nemen van geaggregeerde rijen die aan specifieke criteria voldoen -
SELECTofSELECT DISTINCT, om verder te specificeren welke brongegevens moeten worden opgenomen -
ORDER BY, om aan te geven hoe de gegevens in de resultaten gesorteerd moeten worden -
LIMITenOFFSET, om aan te geven hoeveel-records van de query moeten worden opgenomen en welke
Als u begrijpt in welke volgorde de SQL-syntaxis van de query wordt uitgevoerd, kunt u zien welke resultaten bij elke stap beschikbaar zijn.
FROM en JOIN
Om de gegevens te bepalen die worden opgevraagd, voert de query eerst de opdracht FROM uit, die de bron specificeert waaruit gegevens moeten worden geselecteerd.
Om gegevens van meerdere bronnen op te nemen, neemt u een JOIN clausule op om de rijen van de bronnen te combineren op basis van een gerelateerde kolom:
-
INNER JOINselecteert records die overeenkomen in beide bronnen. -
LEFT JOINselecteert alle records uit de linker bron, en ook alle records die in de rechter bron overeenkomen. -
RIGHT JOINselecteert alle records uit de rechter bron, en ook alle records die in de linker bron overeenkomen. -
FULL JOINselecteert alle records in of bron.
Om gegevens uit meer dan twee bronnen samen te stellen, kunt u meerdere JOIN clausules toepassen om de bronnen op volgorde te combineren. Bijvoorbeeld om bestellingen te combineren met gegevens over hun klanten en verzenders:
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)
Opmerking: In Query Builder maakt u een JOIN clausule als een relatie.
WAAR
Nadat de query zijn bronnen heeft bepaald op basis van de clausules FROM en JOIN, wordt de clausule WHERE uitgevoerd om de resultaten te filteren op alleen gegevens die aan specifieke criteria voldoen.
GROEP DOOR
Als de query geaggregeerde functies bevat, kan deze een GROUP BY instructie bevatten om de rijen samen te vatten op basis van gemeenschappelijke waarden in de opgegeven kolom, zoals GROUP BY column name(s).
HEBBEN
Als de query een GROUP BY statement bevat, worden de beperkingen van de HAVING clausule toegepast. Vergelijkbaar met WHERE, HAVING bevat alleen gegevens van geaggregeerde rijen die aan de specifieke criteria voldoen en verwijdert alle rijen die daar niet aan voldoen.
SELECT of SELECT DISTINCT
Nadat de query de beperkingen van de WHERE clausule heeft toegepast op de bronnen die zijn bepaald door de FROM en JOIN clausules en rijen heeft gegroepeerd op basis van de GROUP BY verklaring en HAVING clausule, worden eventuele expressies in de SELECT verklaring toegepast om de op te nemen gegevens verder te specificeren. Bijvoorbeeld:
-
SELECT kolom1, kolom2 FROM bronretourneert alleen de veldenkolom1enkolom2vanbron. -
SELECT * FROM bronretourneert alle velden vanbron.
Als de query een SELECT DISTINCT statement bevat, worden rijen met dubbele waarden van elke kolom uitgesloten.
ORDER BY
Als de query een trefwoord ORDER BY bevat, worden de resultaten oplopend of aflopend gesorteerd -ASC of DESC- op basis van de opgegeven kolom. Bijvoorbeeld ORDER BY field_header ASC.
Om op meerdere velden te sorteren, scheidt u elk veld met een komma, zoals ORDER BY field_header1 ASC, field_header2 DESC.
Opmerking: De standaardwaarde van ORDER BY is ASC. Als u geen ASC of DESC opgeeft na de veldnaam in de ORDER BY instructie, wordt er automatisch in oplopende volgorde gesorteerd.
LIMIT en OFFSET
Ten slotte worden alle rijen die buiten het bereik van de clausules LIMIT en OFFSET vallen, verwijderd.
- Om een specifiek aantal records in de resultaten te retourneren, neemt u een
LIMITclausule op. Om bijvoorbeeld de eerste 30 records van een bron te retourneren,SELECT * FROM source LIMIT 30. - Om een specifiek aantal records te retourneren, maar niet te beginnen met de eerste record in de bron, voegt u een
OFFSETclausule toe met het aantal records dat u wilt overslaan. Om bijvoorbeeld tien records te retourneren beginnend met de 16e,SELECT * FROM source LIMIT 10 OFFSET 15.