Subquery

Uma subconsulta (subquery) no PostgreSQL é uma consulta que está aninhada dentro de outra consulta. A subconsulta é usada para realizar uma operação de consulta mais complexa e é geralmente usada dentro de uma cláusula WHERE, FROM, ou HAVING de outra consulta SQL. As subconsultas permitem que você faça consultas com base nos resultados de outra consulta.

Aqui estão alguns exemplos de como usar subconsultas no PostgreSQL:

Subconsulta em uma Cláusula WHERE:

SELECT nome
FROM clientes
WHERE id IN (SELECT cliente_id FROM pedidos WHERE valor > 100);

Neste exemplo, a subconsulta na cláusula WHERE obtém todos os cliente_id da tabela pedidos onde o valor é maior que 100. Em seguida, a consulta principal seleciona os nomes dos clientes cujos id estão presentes nos resultados da subconsulta.

Subconsulta em uma Cláusula FROM:

SELECT AVG(subtotal)
FROM (SELECT cliente_id, SUM(valor) as subtotal FROM pedidos GROUP BY cliente_id) as subquery;

Neste exemplo, a subconsulta na cláusula FROM calcula o total de valores de pedidos agrupados por cliente_id. A consulta principal calcula a média dos totais resultantes da subconsulta.

Subconsulta Correlacionada:

SELECT nome
FROM clientes c
WHERE EXISTS (SELECT 1 FROM pedidos p WHERE p.cliente_id = c.id);

Neste exemplo, a subconsulta está correlacionada com a tabela externa clientes usando c.id. Ela verifica se há algum pedido correspondente ao id do cliente na tabela pedidos. Se existir, o nome do cliente é retornado.

Estes são apenas alguns exemplos de como você pode usar subconsultas no PostgreSQL para realizar operações de consulta mais complexas. Subconsultas são poderosas ferramentas de SQL que permitem fazer consultas mais sofisticadas e flexíveis em seus dados.