Subconsultas escalares - Amazon Redshift

Subconsultas escalares

Uma subconsulta escalar é uma consulta SELECT regular entre parênteses que retorna exatamente um valor: uma linha com uma coluna. A consulta é executada, e o valor retornado é usado na consulta externa. Se a subconsulta retornar zero linhas, o valor da expressão da subconsulta será nulo. Se ele retornar mais de uma linha, o Amazon Redshift retornará um erro. A subconsulta pode consultar variáveis da consulta pai, que atuarão como constantes durante qualquer invocação da subconsulta.

Você pode usar subconsultas escalares na maioria das instruções que pedem uma expressão. As subconsultas escalares não são expressões válidas nos seguintes casos:

  • Como valores padrão para expressões

  • Em cláusulas GROUP BY e HAVING

Exemplo

As seguintes subconsultas computam o preço médio pago por venda ao longo de todo o ano de 2008; então, a consulta externa usa este valor na saída para comparar com o preço médio por venda 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)