Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Liste SELECT
La liste SELECT nomme les colonnes, fonctions et expressions que la requête doit renvoyer. La liste représente le résultat de la requête.
Pour plus d’informations sur les fonctions SQL, consultez SQLréférence des fonctions. Pour plus d’informations sur les expressions, consultez Expressions conditionnelles.
Syntaxe
SELECT [ TOP number ] [ ALL | DISTINCT ] * | expression [ AS column_alias ] [, ...]
Paramètres
- TOP nombre
-
TOP accepte un nombre entier positif comme argument, qui définit le nombre de lignes retournées au client. Le comportement avec la clause TOP est identique à celui avec la clause LIMIT. Le nombre de lignes qui est renvoyé est fixe, contrairement à l’ensemble de lignes. Pour renvoyer un ensemble de lignes constant, utilisez TOP ou LIMIT avec une clause ORDER BY.
- ALL
-
Mot-clé redondant qui définit le comportement par défaut, si vous ne spécifiez pas DISTINCT.
SELECT ALL *
signifie la même chose queSELECT *
(sélectionner toutes les lignes de toutes les colonnes et conserver les doublons). - DISTINCT
-
Option qui élimine les lignes en double du jeu de résultats, en fonction de la correspondance des valeurs dans une ou plusieurs colonnes.
Note
Si votre application autorise des clés étrangères ou des clés primaires non valides, les requêtes peuvent renvoyer des résultats incorrects. Par exemple, une requête SELECT DISTINCT peut renvoyer des lignes dupliquées si la colonne de clé primaire ne contient pas toutes les valeurs uniques. Pour plus d'informations, consultez Définition des contraintes de table.
- * (astérisque)
-
renvoie tout le contenu de la table (toutes les colonnes et toutes les lignes).
- expression
-
Expression formée d’une ou de plusieurs colonnes qui existent dans les tables référencées par la requête. Une expression peut contenir des fonctions SQL. Par exemple :
avg(datediff(day, listtime, saletime))
- AS alias_colonne
-
Nom temporaire de la colonne utilisé dans le jeu de résultats final. Le mot-clé AS est facultatif. Par exemple :
avg(datediff(day, listtime, saletime)) as avgwait
Si vous ne spécifiez pas un alias pour une expression qui n’est pas un nom de colonne simple, le jeu de résultats applique un nom par défaut à cette colonne.
Note
L’alias est reconnu juste après sa définition dans la liste cible. Vous pouvez utiliser un alias dans d’autres expressions définies après lui dans la même liste cible. L’exemple suivant illustre ce scénario.
select clicks / impressions as probability, round(100 * probability, 1) as percentage from raw_data;
La référence latérale à un alias vous évite de devoir répéter l’expression disposant d’un alias lors de la création d’expressions plus complexes dans la même liste cible. Lorsqu’Amazon Redshift analyse ce type de référence, il rajoute simplement dans la ligne les alias précédemment définis. S’il existe une colonne avec le même nom défini dans la clause
FROM
que dans l’expression disposant d’un alias précédente, la colonne dans la clauseFROM
a la priorité. Par exemple, dans la requête précédente, s’il existe une colonne nommée « probability » dans la table raw_data, le terme « probability » dans la seconde expression de la liste cible fait référence à cette colonne et non au nom d’alias « probability ».
Notes d’utilisation
TOP est une extension SQL ; elle fournit une alternative au comportement LIMIT. Vous ne pouvez pas utiliser TOP et LIMIT dans la même requête.
Exemples
L’exemple suivant renvoie 10 lignes de la table SALES. Bien que la requête utilise la clause TOP, elle renvoie toujours un ensemble imprévisible de lignes, car aucune clause ORDER BY n’est spécifiée.
select top 10 * from sales;
La requête suivante est fonctionnellement équivalente, mais utilise une clause LIMIT au lieu d’une clause TOP :
select * from sales limit 10;
L’exemple suivant renvoie les 10 premières lignes de la table SALES en utilisant la clause TOP, classées dans la colonne QTYSOLD par ordre décroissant.
select top 10 qtysold, sellerid from sales order by qtysold desc, sellerid; qtysold | sellerid --------+---------- 8 | 518 8 | 520 8 | 574 8 | 718 8 | 868 8 | 2663 8 | 3396 8 | 3726 8 | 5250 8 | 6216 (10 rows)
L’exemple suivant renvoie les deux premières valeurs QTYSOLD et SELLERID de la table SALES, classées par la colonne QTYSOLD :
select top 2 qtysold, sellerid from sales order by qtysold desc, sellerid; qtysold | sellerid --------+---------- 8 | 518 8 | 520 (2 rows)
L’exemple suivant montre la liste des groupes de catégories distincts de la table CATEGORY :
select distinct catgroup from category order by 1; catgroup ---------- Concerts Shows Sports (3 rows) --the same query, run without distinct select catgroup from category order by 1; catgroup ---------- Concerts Concerts Concerts Shows Shows Shows Sports Sports Sports Sports Sports (11 rows)
L’exemple suivant renvoie l’ensemble distinct de numéros de semaine pour décembre 2008. Sans la clause DISTINCT, l’instruction renverrait 31 lignes, soit une pour chaque jour du mois.
select distinct week, month, year from date where month='DEC' and year=2008 order by 1, 2, 3; week | month | year -----+-------+------ 49 | DEC | 2008 50 | DEC | 2008 51 | DEC | 2008 52 | DEC | 2008 53 | DEC | 2008 (5 rows)