Sous-requêtes scalaires - Amazon Redshift

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.

Sous-requêtes scalaires

Une sous-requête scalaire est une requête SELECT régulière entre parenthèses qui renvoie exactement une valeur : une seule ligne avec une colonne. La requête est exécutée et la valeur retournée est utilisée dans la requête externe. Si la sous-requête ne renvoie aucune ligne, l’expression de la sous-requête a la valeur null. Si elle renvoie plusieurs lignes, Amazon Redshift renvoie une erreur. La sous-requête peut faire référence aux variables de la requête parente, qui serviront de constantes lors d’une invocation de la sous-requête.

Vous pouvez utiliser des sous-requêtes scalaires dans la plupart des instructions qui appellent une expression. Les sous-requêtes scalaires ne sont pas des expressions valides dans les cas suivants :

  • Comme valeurs par défaut pour les expressions

  • Dans les clauses GROUP BY et HAVING

Exemple

La sous-requête suivante calcule le prix moyen payé par vente sur toute l’année 2008, puis la requête externe utilise cette valeur dans la sortie pour la comparer au prix moyen par vente par trimestre :

select qtr, avg(pricepaid) as avg_saleprice_per_qtr, (select avg(pricepaid) from sales join date on sales.dateid=date.dateid where year = 2008) as avg_saleprice_yearly from sales join date on sales.dateid=date.dateid where year = 2008 group by qtr order by qtr; qtr | avg_saleprice_per_qtr | avg_saleprice_yearly -------+-----------------------+---------------------- 1 | 647.64 | 642.28 2 | 646.86 | 642.28 3 | 636.79 | 642.28 4 | 638.26 | 642.28 (4 rows)