Subconsultas escalares - Amazon Redshift

Subconsultas escalares

Una subconsulta escalar es una consulta SELECT regular entre paréntesis que devuelve exactamente un valor: una fila con una columna. La consulta se ejecuta y el valor devuelto se utiliza en la consulta externa. Si la subconsulta devuelve cero filas, el valor de la expresión de subconsulta es nulo. Si devuelve más de una fila, Amazon Redshift devuelve un error. La subconsulta puede referirse a variables de la consulta principal, que actuarán como constantes durante una invocación de la subconsulta.

Puede usar las subconsultas escalares en la mayoría de instrucciones que requiere una expresión. Las subconsultas escalares no son expresiones válidas en los siguientes casos:

  • Como valores predeterminados para expresiones

  • En cláusulas GROUP BY y HAVING

Ejemplo

La siguiente subconsulta calcula el precio promedio pagado por venta en todo el 2008, luego la consulta externa utiliza ese valor en el resultado para compararlo con el precio promedio por venta por 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)