Subconsultas Postgres

introdução

quando você está criando uma instrução SQL no PostgreSQL, você pode achar que você precisa incorporar outra consulta SQL dentro de sua instrução. Essas consultas aninhadas ou incorporadas são conhecidas como subconsultas e fornecem uma maneira eficaz de obter os dados necessários de uma instrução SQL. Neste artigo, vamos dar uma olhada mais de perto nas subconsultas Postgres e revisar alguns exemplos que demonstram como usá-las.

pré-requisito

Antes de iniciar este tutorial, certifique-se de ter instalado e configurado o seguinte em sua máquina:

  • PostgreSQL

o conhecimento básico do PostgreSQL também é necessário para poder acompanhar o tutorial.

o que é uma subconsulta Postgres?

como o nome sugere, uma consulta Postgres é uma consulta aninhada dentro de outra consulta ou instrução SQL. A subconsulta retorna dados que são usados na consulta principal como parte das condições especificadas na cláusula WHERE.

Criando um conjunto de dados de amostra

nesta seção, criaremos um conjunto de dados de amostra que podemos usar em nossos exemplos. Precisamos fazer login no shell Postgres para criar o banco de dados e a tabela.

  • podemos criar nosso banco de dados usando o seguinte comando:
1
criar banco de dados de produto
  • podemos, então, criar tabelas para o banco de dados com a seguinte estrutura:
1
2
3
4
5
6
7
8
9
10
CRIAR TABELA, SE NÃO EXISTIR stock (
id SERIAL PRIMARY KEY,
category_id de CARACTERES DIFERENTES(100),
product_name de CARACTERES DIFERENTES(100),
sku CARACTERES DIFERENTES(100),
descrição de CARACTERES DIFERENTES(100),INT
INT quantidade
);

Finalmente, nós inserir registros de exemplo:

1
2
3
4
5
6
7
INSERIR EM estoque (id,category_id, product_name, sku, descrição, preço, quantidade)
VALORES
(1,’M01′,’Monitor 22inch ‘,’HW020’, ‘monitor de Computador 22inch’, 300, 100),
(2,’M02′,’pasta Térmica’,’HW040′, ‘CPU pasta térmica’, 2, 130),
(3,’M03′,’Ferramenta de Crimpagem’,’HW021′, ‘ferramenta de Rede’, 14, 10),
(4,’M01′,’Teclado’,’HW098′, ‘Teclado do Computador’, 3, 25),
(5,’M01′,’SSD de 250GB’,’HW033′, ‘Estado Sólido’, 24, 60);

Agora, vamos criar outra tabela chamada ‘categoria’, usando a seguinte estrutura:

1
2
3
4
CREATE TABLE IF not EXISTS categoria (
category_id de CARACTERES DIFERENTES(100),
category_name VARIANDO de CARACTERE(100)
);

Nós vamos inserir exemplo de registros nesta tabela também:

1
2
3
4
5
INSERT INTO categoria (category_id,category_name)
VALORES
(‘M01′,’Pheriperals’),
(‘M02’, ‘Materiais Diversos’),
(‘M03′,’De rede’);

As duas tabelas devem ter o seguinte aspecto:

STOCK TABELA de

1
2
3
4
5
6
7
8
identificação | categoryid | product_name | sku | descrição | preço | quantity
—-+————-+—————–+——-+————————-+——-+———-
1 | M01 | Monitor 22inch | HW020 | monitor de Computador 22inch | 300 | 100
2 | M02 | pasta Térmica | HW040 | CPU pasta térmica | 2 | 130
3 | M03 | Ferramenta de Crimpagem | HW021 | ferramenta de Rede | 14 | 10
4 | M01 | Teclado | HW098 | Computador Teclado | 3 | 25
5 | M01 | SSD 250GB | HW033 | Unidade de Estado Sólido | 24 | 60
(5 linhas)

TABELA CATEGORIA

1
2
3
4
5
6
category_id | category_name
————-+————————-
M01 | Pheriperals
M02 | Materiais Diversos
M03 | Rede
(3 linhas)

Postgres Subconsultas Exemplo

Agora que criamos o nosso exemplo de conjunto de dados, podemos observar alguns exemplos que ilustram como usar Postgres subconsultas:

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECIONE
id
product_name,
preço
DE
ações
ONDE
preço > (
SELECIONE
AVG (preço)
DE
estoque
);

Vamos discutir esse tipo de consulta em um pouco mais de detalhe.

  • primeiro, observe a consulta entre parênteses:
1
2
3
4
SELECIONE
AVG (preço)
DE
estoque
  • Postgres executa as consultas no fim, começando do mais íntimo do subconsulta.
  • após processar a subconsulta, o resultado será retornado à consulta externa.
  • finalmente, a consulta externa será executada.

a saída deve ser algo assim:

1
2
3
4
identificação | product_name | preço
—-+—————–+——-
1 | Monitor 22inch | 300
(1 linha)

vejamos outro exemplo onde usamos uma subconsulta em uma FROM cláusula:

1
2
3
4
5
6
SELECIONE o estoque.product_name, the_subquery.category_name
do estoque,
(selecione a categoria.category_id, categoria.category_name, Contagem (category_id) como total
da categoria
grupo por categoria.category_id, categoria.category_name) the_subquery
onde the_subquery.categoria_id = estoque.category_id;
1
2
3
(SELECIONE a categoria.category_id, categoria.category_name, Contagem (category_id) como total
da categoria
grupo por categoria.category_id, categoria.category_name) the_subquery

na consulta acima, colocamos a subconsulta sob o alias ‘the_subquery’. Esse alias será usado como referência à subconsulta.

a saída deve ser algo assim:

1
2
3
4
5
6
7
8
product_name | category_name
—————–+————————-
SSD de 250GB | Pheriperals
Teclado | Pheriperals
Monitor 22inch | Pheriperals
pasta Térmica de Diversos Materiais
Ferramenta de Crimpagem | Rede
(5 linhas)

Conclusão

Se você precisa para construir uma consulta mais complexa para obter os dados de que você precisa, uma Postgres subconsulta pode ser necessário para realizar a tarefa. As subconsultas são aninhadas dentro da consulta externa; os resultados retornados delas são usados como parte da cláusula WHERE na consulta principal. Neste artigo, explicamos como usar uma subconsulta Postgres e analisamos alguns exemplos de instruções SQL que incluem subconsultas. Com esses exemplos e explicações, você não terá problemas para implementar subconsultas em suas próprias consultas de banco de dados.

Deixe uma resposta

O seu endereço de email não será publicado.