När du skriver in din fråga i SQL Editor eller skapar en beräkning, använder du Presto SQL-syntax. I SQL Editor kan du till exempel skapa en komplett SELECT -fråga för att hitta de källor som ska inkluderas och sedan filtrera deras data:
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
Obs: För att säkerställa dataintegritet har SQL Editor support för skrivskyddade satser som SELECT, men inte läs-/skrivsatser som INSERT eller DELETE.
Utöver dessa klausuler och satser kan din SQL-syntax innehålla flera funktioner och operatorer för att ytterligare definiera resultaten och utföra beräkningar:
- Funktioner för textsträngar
- Datum- och tidsfunktioner
- Omvandlingsfunktioner
- Villkorliga uttryck
- Aggregerade och matematiska funktioner och operatorer
- JSON-funktioner
- Jämförelsefunktioner och operatorer
Ordningsföljd för verksamheten
Även om inte alla frågor innehåller alla klausuler, körs varje del av SQL-satsen i en viss ordning:
-
FROMochJOIN, för att fastställa källorna till de uppgifter som efterfrågas -
WHERE, för att endast inkludera data som uppfyller specifika kriterier -
GROUP BY, för att sammanfatta data baserat på gemensamma värden -
HAVING, för att endast inkludera data från aggregerade rader som uppfyller specifika kriterier -
SELECTellerSELECT DISTINCT, för att ytterligare specificera vilka källdata som ska inkluderas -
ORDER BY, för att ange hur data ska sorteras i resultaten -
LIMITochOFFSET, för att ange hur många - och vilka - poster från frågan som ska inkluderas
Om du förstår i vilken ordning frågan kör sin SQL-syntax kan du lättare identifiera de resultat som finns tillgängliga i varje steg.
FROM och JOIN
För att fastställa vilka data som ska hämtas körs först kommandot FROM, som anger vilken källa som data ska hämtas från.
Om du vill inkludera data från flera källor kan du inkludera en JOIN -sats för att kombinera källornas rader baserat på en relaterad kolumn:
-
INNER JOINväljer poster som matchas i båda källor. -
LEFT JOINväljer alla poster från den vänstra källan och även alla som matchas i den högra källan. -
RIGHT JOINväljer alla poster från den högra källan och även alla som matchas i den vänstra källan. -
FULL JOINväljer alla poster i antingen källa.
Om du vill sammanställa data från fler än två källor kan du använda flera JOIN -klausuler för att kombinera källorna i ordning. Till exempel för att kombinera order med uppgifter om kunder och transportörer:
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)
Obs: I Query Builder skapar du en JOIN klausul som en relation.
VAR
Efter att frågan har fastställt sina källor baserat på FROM och JOIN -klausulerna, körs WHERE -klausulen för att filtrera resultaten till endast data som uppfyller specifika kriterier.
GRUPPERA EFTER
Om frågan innehåller aggregeringsfunktioner kan den innehålla en GROUP BY -sats för att sammanfatta raderna baserat på gemensamma värden i den angivna kolumnen, t.ex. GROUP BY kolumnnamn.
HAVANDE
Om frågan innehåller en GROUP BY -sats tillämpas begränsningarna i HAVING -satsen. På samma sätt som WHERE, inkluderar HAVING endast data från aggregerade rader som uppfyller de specifika kriterierna och kasserar alla rader som inte gör det.
VÄLJ eller VÄLJ DISTINCT
När frågan har tillämpat begränsningarna i WHERE -satsen på de källor som bestäms av FROM och JOIN -satserna och grupperat rader baserat på GROUP BY -satsen och HAVING -satsen, används eventuella uttryck i SELECT -satsen för att ytterligare ange vilka data som ska inkluderas. Till exempel:
-
SELECT column1, column2 FROM sourcereturnerar endast fältencolumn1ochcolumn2frånsource. -
SELECT * FROM källareturnerar alla fält frånkälla.
Om frågan innehåller en SELECT DISTINCT -sats utesluts alla rader med duplicerade värden från varje kolumn.
ORDER BY
Om frågan innehåller nyckelordet ORDER BY sorteras resultaten i stigande eller fallande ordning -ASC eller DESC- baserat på den angivna kolumnen. Till exempel ORDER BY field_header ASC.
Om du vill sortera efter flera fält skiljer du dem åt med ett kommatecken, t.ex. ORDER BY field_header1 ASC, field_header2 DESC.
Obs: Standardvärdet för ORDER BY är ASC. Om du inte anger ASC eller DESC efter fältnamnet i ORDER BY -satsen, sorteras fältet automatiskt i stigande ordning.
LIMIT och OFFSET
Slutligen kasserar frågan alla rader som faller utanför intervallet för dess LIMIT och OFFSET klausuler.
- Om du vill returnera ett visst antal poster i resultaten inkluderar du en
LIMITklausul. Om du till exempel vill returnera de 30 första posterna från en källaSELECT * FROM source LIMIT 30. - Om du vill returnera ett visst antal poster men inte börja med den första posten i källan, lägger du till en
OFFSETklausul med antalet poster som ska hoppas över. Om du till exempel vill returnera tio poster som börjar med den 16:e,SELECT * FROM source LIMIT 10 OFFSET 15.