Buscar

PostgreSQL - join, inner join, left join, right join, full outer join

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

left join
select * from vendas
left join geo on geo.zip = vendas.zip;
mais de um join
select * from vendas
left join geo on geo.zip = vendas.zip
left join produtos on vendas.id_produto = produtos.id_produto;
as lojas que não tem vendas registradas LEFT JOIN:
select zip from geo
left join vendas on geo.zip = vendas.zip
where vendas.zip is null;
right join (a tabela de referência agr é a da direita, a que vem depois do join)
select * from vendas
right join geo on geo.zip = vendas.zip
as lojas que não tem vendas registradas RIGHT JOIN:
select * from vendas
right join geo on geo.zip = vendas.zip
where vendas.zip is null;
inner join (a diferença é que esse traz apenas o que coincide das duas tabelas, enquanto o
left e right trazem tudo de uma tabela e da outra apenas que coincide com a principal)
select * from vendas
inner join geo on geo.zip = vendas.zip;
select * from geo
inner join vendas on geo.zip = vendas.zip;
-- qual o nome do produto que mais foi vendido?
select distinct produtos.produto from produtos
inner join vendas on produtos.id_produto = vendas.id_produto
where vendas.id_produto = (
select id_produto from vendas
group by 1 order by sum(quantidade) desc limit 1
);
select id_produto, sum(quantidade) from vendas
group by 1 order by 2 desc;
select id_produto, produto from produtos where id_produto = 604;
full outer join (oposto do inner quando usa o null)
select * from geo g
full outer join vendas v
on g.zip = v.zip
order by v.zip asc;
select * from geo g
full outer join vendas v
on g.zip = v.zip
where g.zip is null or v.zip is null;
-- Qual foi a receita total de vendas por segmento?
select segmento, sum(receita) from vendas
left join produtos on produtos.id_produto = vendas.id_produto
group by segmento order by 2 desc;
-- Qual cidade que foi vendido o maior número de peças?
select cidade from vendas v
left join geo g on g.zip = v.zip
group by 1 order by sum(quantidade) desc limit 1;

Continue navegando