Lorsque vous entrez votre requête dans l’éditeur SQL ou créez un calcul, vous utilisez la syntaxe Presto SQL. Par exemple, dans l'éditeur SQL, vous pouvez composer une requête complète SELECT pour trouver les sources à inclure et ensuite filtrer leurs données :
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
Note : Pour assurer l'intégrité des données, l'éditeur SQL prend en charge les instructions en lecture seule telles que SELECT, mais pas les instructions en lecture/écriture telles que INSERT ou DELETE.
En plus de ces clauses et instructions, votre syntaxe SQL peut contenir plusieurs fonctions et opérateurs pour mieux définir les résultats et effectuer des calculs :
- Fonctions relatives aux chaînes de texte
- Fonctions de date et d'heure
- Fonctions de conversion
- Expressions conditionnelles
- Fonctions et opérateurs agrégés et mathématiques
- Fonctions JSON
- Fonctions et opérateurs de comparaison
Ordre des opérations
Bien que chaque requête ne comprenne pas toutes les clauses, chaque partie de l'instruction SQL s'exécute dans un ordre particulier :
-
FROMetJOIN, pour déterminer les sources des données interrogées. -
WHERE, pour n'inclure que les données qui répondent à des critères spécifiques -
GROUP BY, pour résumer les données sur la base de valeurs communes -
HAVING, pour inclure uniquement les données des lignes agrégées qui répondent à des critères spécifiques -
SELECTouSELECT DISTINCT, pour spécifier davantage les données sources à inclure. -
ORDER BY, pour spécifier comment trier les données dans les résultats -
LIMITetOFFSET, pour spécifier combien et quels enregistrements de la requête inclure.
Comprendre l'ordre dans lequel la requête exécute sa syntaxe SQL peut vous aider à identifier les résultats disponibles à chaque étape.
FROM and JOIN
Pour déterminer les données interrogées, la requête exécute d'abord la commande FROM, qui spécifie la source à partir de laquelle les données doivent être sélectionnées.
Pour inclure des données provenant de plusieurs sources, incluez une clause JOIN pour combiner les lignes des sources sur la base d'une colonne apparentée :
-
INNER JOINsélectionne les enregistrements correspondant aux deux sources dans . -
LEFT JOINsélectionne tous les enregistrements de la source de gauche, ainsi que tous les enregistrements correspondant à la source de droite. -
RIGHT JOINsélectionne tous les enregistrements de la source de droite, ainsi que tous les enregistrements correspondant à la source de gauche. -
FULL JOINsélectionne tous les enregistrements dans ou source.
Pour compiler des données provenant de plus de deux sources, vous pouvez appliquer plusieurs clauses JOIN pour combiner les sources dans l'ordre. Par exemple, pour combiner les commandes avec des données sur les clients et les expéditeurs :
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)
Note : Dans Query Builder, vous créez une clause JOIN comme une relation .
OÙ
Après que la requête a déterminé ses sources sur la base des clauses FROM et JOIN, elle exécute la clause WHERE pour filtrer les résultats afin de ne conserver que les données répondant à des critères spécifiques.
GROUPE PAR
Si la requête contient des fonctions d'agrégation, elle peut inclure une instruction GROUP BY pour résumer ses lignes en fonction des valeurs communes de la colonne spécifiée, telle que GROUP BY column name(s).
AYANT
Si la requête comprend une instruction GROUP BY, elle applique les contraintes de la clause HAVING. Comme WHERE, HAVING n'inclut que les données des lignes agrégées qui répondent aux critères spécifiques et écarte toutes les lignes qui n'y répondent pas.
SELECTIONNER ou SELECTIONNER DISTINCT
Après que la requête a appliqué les contraintes de la clause WHERE aux sources déterminées par les clauses FROM et JOIN et regroupé les lignes sur la base de l'instruction GROUP BY et de la clause HAVING, elle applique toutes les expressions de l'instruction SELECT pour spécifier davantage les données à inclure. Par exemple :
-
SELECT column1, column2 FROM sourcene renvoie que les champscolumn1etcolumn2desource. -
SELECT * FROM sourcereturns all fields fromsource.
Si la requête comprend une instruction SELECT DISTINCT, elle exclut alors toutes les lignes contenant des valeurs dupliquées dans chaque colonne.
ORDER BY
Si la requête contient le mot-clé ORDER BY, elle trie les résultats par ordre croissant ou décroissant -ASC ou DESC- en fonction de la colonne spécifiée. Par exemple, ORDER BY field_header ASC.
Pour trier en fonction de plusieurs champs, séparez chacun d'eux par une virgule, comme ORDER BY field_header1 ASC, field_header2 DESC.
Note : La valeur par défaut de ORDER BY est ASC. Si vous ne spécifiez pas ASC ou DESC après le nom du champ dans l'instruction ORDER BY, le tri se fait automatiquement par ordre croissant.
LIMIT et OFFSET
Enfin, la requête rejette toutes les lignes qui se trouvent en dehors de la plage de ses clauses LIMIT et OFFSET.
- Pour renvoyer un nombre spécifique d'enregistrements dans les résultats, incluez une clause
LIMIT. Par exemple, pour obtenir les 30 premiers enregistrements d'une source,SELECT * FROM source LIMIT 30. - Pour renvoyer un nombre spécifique d'enregistrements sans commencer par le premier enregistrement de la source, ajoutez une clause
OFFSETindiquant le nombre d'enregistrements à ignorer. Par exemple, pour obtenir dix enregistrements commençant par le 16,SELECT * FROM source LIMIT 10 OFFSET 15.