Hoje fiz uma aula completa de subqueries para você! Nesta aula vou explicar o que é o subqueries, para que serve e resolver 5 exercícios!
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Fala Impressionadores! Hoje nós vamos ter uma aula completa de Subqueries no SQL!
Não sabe o que é subqueries, ou ainda não tem o PostgreSQL instalado? Pode ficar tranquilo que eu vou te ensinar o que é e como você vai poder instalar esse SGBD.
Para essa aula nós vamos fazer Subqueries no PostgreSQL com o banco de dados Northwind.
Depois disso vou fazer com você 5 exemplos de subqueries para que você veja na prática como utilizar esse conhecimento!
E aí, bora aprender mais sobre Subquery no SQL? Então vem comigo que eu vou te ensinar!
Por que o Subqueries é importante no SQL?
Saber subqueries é importante porque ele otimiza os processos do SQL, é possibilita colocar uma consulta dentro de outra consulta.
Subqueries podem ser utilizadas nas cláusulas WHERE, HAVING, FROM e SELECT, vamos fazer aqui alguns exemplos de como aplicar no nosso banco de dados:
1. Cláusula WHERE
SELECT
*
FROM tabela
WHERE coluna = (SELECT);
Observe que estamos fazendo o uso do SELECT como um filtro, ele vai retornar um valor que pode ser usado em uma consulta.
2. Cláusula FROM
SELECT
*
FROM (SELECT) t;
A cláusula FROM é a possibilidade que temos de selecionar uma tabela, como o SELECT também pode retornar uma tabela então podemos usar dentro dos parênteses e informar em seguida um nome para esta tabela.
3. Cláusula SELECT
SELECT
*,
(SELECT)
FROM tabela;
Neste caso usamos o SELECT dentro do SELECT para o caso de querer usar o resultado do primeiro SELECT em uma nova coluna.
4. Cláusula HAVING
SELECT
coluna,
COUNT(*)
FROM tabela
GROUP BY coluna
HAVING COUNT(*) >= (SELECT);
O HAVING é outra possibilidade de filtrar, utilizamos para filtrar dados agrupados, neste caso vamos selecionar a coluna, fazer uma contagem dos valores agrupando pela coluna e depois comparar com o SELECT. Essas são as maneiras que temos de utilizar subqueries!
Exemplos práticos:
Exemplo 1: Quais produtos têm um preço acima da média?
Vamos trabalhar com o banco de dados Northwind, este é um banco de dados de exemplo.
Caso você não tenha assista à aula sobre a instalação do PostGreSQL que preparei aqui no blog.
Bom, para sabermos quais produtos tem o preço acima da média precisamos primeiro saber a média e também em que arquivo temos esta informação. Neste banco de dados essas informações estão no arquivo chamado Products.
select * from products;
select avg(unit_price) from products;
Selecione e rode o código, vamos ter como média da coluna o valor de -> 28.83 (valor arredondado). Agora que sabemos a média vamos fazer um código que seleciona apenas os produtos que estão acima deste valor.
select * from products
where unit_price >= (select avg(unit_price) from products);
Pronto, dessa forma a pesquisa está sendo feita de foram automática!
Subquery: Cláusula WHERE
Exemplo 2: Quais pedidos têm uma quantidade vendida acima da quantidade vendida média?
O procedimento para fazer esta análise é o mesmo, primeiro vamos buscar a média e ver se existe uma tabela com essas informações.
Neste caso as informações estão na tabela order_details.
Como temos pedidos com a mesma identificação, ou seja, as linhas não são cada uma um pedido diferente, o ideal é fazer uma média por pedido para obtermos o valor correto (vamos fazer no próximo exercício), nesta questão, para simplificarmos, vamos considerar que em cada linha temos um pedido.
Select * from order_details
where quantity >= (select avg(quantity) from order_details);
Subquery: Cláusula FROM
Exemplo 3: Qual é a média geral de quantidade vendida por pedidos?
Neste caso vamos fazer a média por pedido, por isso vamos fazer o agrupamento de cada pedido identificando pelo -> order_id.
Feito isso, podemos tirar a média.
Select * from order_details;
Select
avg(total_vendido)
From (
select
order_id,
sum(quantity) total_vendido
from order_details
group by order_id) t;
Subquery: Cláusula SELECT
Exemplo 4: Faça uma consulta à tabela products e adicione uma coluna que contenha a média geral de preço dos produtos.
select
*,
(select avg(unit_price) from products) media_precos
from products;
Exemplo 5 (Corrigindo o exemplo 2): Quais pedidos têm uma quantidade vendida acima da quantidade vendida média (correta)?
Nós já calculamos a quantidade vendida média no exercício 3, vamos usar o mesmo cálculo, pegar o resultado da média real e retornar os valores dos produtos acima da média.
select * from order_details;
select
order_id,
sum(quantity)
from order_details
group by order_id
having sum(quantity) >= (
select
avg(total_vendido)
from (
select
order_id,
sum(quantity) total_vendido
from order_details
group by order_id) t);
Sempre que vamos filtrar depois do agrupamento pronto, devemos usar o having, dessa forma vamos ter como resposta os valores acima da média sem repetição.
Conclusão – Aula Completa de Subqueries no PostgreSQL
Você já sabia como aplicar subqueries com WHERE, FROM, SELECT e HAVING? Nesta aula trouxe 5 exercícios resolvidos sobre pesquisas em banco de dados.
Utilize esta aula para treinar modos de solucionar problemas, recomendo que baixe o material e tente resolver as questões.
Temos também uma aula com dicas de como melhorar suas análises de dados e tomada de decisão!
Eu fico por aqui! Até a próxima! Um abraço,
Hashtag Treinamentos
Para acessar outras publicações de SQL, clique aqui!
Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.