Når du skriver inn spørringen din i SQL Editor eller oppretter en beregning, bruker du Presto SQL-syntaks. I SQL Editor kan du for eksempel lage en fullstendig SELECT -spørring for å finne kildene som skal inkluderes, og deretter filtrere dataene deres:
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
Merk: For å sikre dataintegritet støtter SQL-editoren skrivebeskyttede setninger som SELECT, men ikke lese/skrive-setninger som INSERT eller DELETE.
I tillegg til disse klausulene og setningene kan SQL-syntaksen inneholde flere funksjoner og operatorer for å definere resultatene ytterligere og utføre beregninger:
- Tekststrengfunksjoner
- Dato- og tidsfunksjoner
- Konverteringsfunksjoner
- Betingede uttrykk
- Aggregerte og matematiske funksjoner og operatorer
- JSON-funksjoner
- Sammenligningsfunksjoner og operatorer
Rekkefølge av operasjoner
Selv om ikke alle spørringer inneholder alle klausulene, kjøres hver del av SQL-setningen i en bestemt rekkefølge:
-
FROMogJOIN, for å finne kildene til dataene det spørres etter -
WHERE, for å bare inkludere data som oppfyller bestemte kriterier -
GROUP BY, for å oppsummere data basert på felles verdier -
HAVING, for å bare inkludere data fra aggregerte rader som oppfyller bestemte kriterier -
SELECTellerSELECT DISTINCT, for å spesifisere ytterligere hvilke kildedata som skal inkluderes -
ORDER BY, for å angi hvordan dataene skal sorteres i resultatene -
LIMITogOFFSET, for å angi hvor mange - og hvilke - poster fra spørringen som skal inkluderes
Ved å forstå rekkefølgen som spørringen utfører SQL-syntaksen i, kan du finne ut hvilke resultater som er tilgjengelige på hvert trinn.
FROM og JOIN
For å finne ut hvilke data det spørres etter, kjører spørringen først kommandoen FROM, som angir kilden det skal velges data fra.
Hvis du vil inkludere data fra flere kilder, kan du inkludere en JOIN -klausul for å kombinere kildenes rader basert på en relatert kolonne:
-
INNER JOINvelger poster som samsvarer med i begge -kildene. -
LEFT JOINvelger alle poster fra den venstre kilden, og også alle som matches i den høyre kilden. -
RIGHT JOINvelger alle poster fra den høyre kilden, og også alle poster som matches i den venstre kilden. -
FULL JOINvelger alle poster i enten kilde.
Hvis du vil sammenstille data fra mer enn to kilder, kan du bruke flere JOIN -klausuler for å kombinere kildene i rekkefølge. For eksempel for å kombinere bestillinger med data om kunder og avsendere:
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)
Merk: I Query Builder oppretter du en JOIN -klausul som en -relasjon.
HVOR
Etter at spørringen har bestemt kildene basert på FROM og JOIN -klausulene, kjører den WHERE -klausulen for å filtrere resultatene slik at de bare inneholder data som oppfyller bestemte kriterier.
GROUP BY
Hvis spørringen inneholder aggregerte funksjoner, kan den inneholde en GROUP BY setning for å oppsummere radene basert på felles verdier i den angitte kolonnen, for eksempel GROUP BY kolonnenavn(er).
HAR
Hvis spørringen inneholder en GROUP BY -setning, brukes begrensningene i HAVING -klausulen. I likhet med WHERE, inkluderer HAVING bare data fra aggregerte rader som oppfyller de spesifikke kriteriene, og forkaster alle rader som ikke gjør det.
SELECT eller SELECT DISTINCT
Etter at spørringen har brukt begrensningene i WHERE -klausulen på kildene som er bestemt av FROM og JOIN -klausulene, og gruppert rader basert på GROUP BY -setningen og HAVING -klausulen, bruker den eventuelle uttrykk i SELECT -setningen for å spesifisere hvilke data som skal inkluderes ytterligere. For eksempel:
-
SELECT column1, column2 FROM sourcereturnerer bare feltenecolumn1ogcolumn2frasource. -
SELECT * FROM kildereturnerer alle felt frakilde.
Hvis spørringen inneholder en SELECT DISTINCT -setning, ekskluderes alle rader med dupliserte verdier fra hver kolonne.
ORDER BY
Hvis spørringen inneholder nøkkelordet ORDER BY, sorteres resultatene i stigende eller synkende rekkefølge -ASC eller DESC- basert på den angitte kolonnen. For eksempel ORDER BY field_header ASC.
Hvis du vil sortere etter flere felt, skiller du dem med komma, for eksempel ORDER BY field_header1 ASC, field_header2 DESC.
Merk: Standardverdien for ORDER BY er ASC. Hvis du ikke spesifiserer ASC eller DESC etter feltnavnet i ORDER BY -setningen, sorterer den automatisk i stigende rekkefølge.
LIMIT og OFFSET
Til slutt forkaster spørringen alle rader som faller utenfor området for klausulene LIMIT og OFFSET.
- Hvis du vil returnere et bestemt antall poster i resultatene, inkluderer du en
LIMIT-klausul. Hvis du for eksempel vil returnere de første 30 postene fra en kilde,SELECT * FROM source LIMIT 30. - Hvis du vil returnere et bestemt antall poster, men ikke starte med den første posten i kilden, legger du til en
OFFSETklausul med antall poster som skal hoppes over. Hvis du for eksempel vil returnere ti poster som begynner med den 16.,SELECT * FROM source LIMIT 10 OFFSET 15.