Blog

Postado em em 15 de dezembro de 2023

Group By com Join no SQL – Uma Combinação Poderosa

Aprenda a utilizar o Group By com Join no SQL e tenha uma poderosa combinação para auxiliá-lo em análises e trabalhos com bancos de dados!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Group By com Join no SQL – Uma Combinação Poderosa

Na aula de hoje, quero te mostrar uma combinação extremamente eficaz que se tornará uma ferramenta poderosa para suas análises e trabalhos com Bancos de Dados: o Group By com Join no SQL!

Vou te mostrar o passo a passo para combinar essas duas cláusulas que já são muito utilizadas no SQL. E explicarei um pouco sobre o funcionamento de cada uma delas.

Em seguida, demonstrarei como utilizar essa poderosa combinação para realizar análises avançadas em seus bancos de dados.

O que é o Group By no SQL?

O Group By é um comando do SQL que nos permite criar agrupamentos, possibilitando a visualização de tabelas resumo por meio de consultas SQL.

Com ele, podemos realizar análises mais detalhadas, agrupando informações de uma tabela com base em critérios específicos.

Vamos pegar uma tabela de produtos como exemplo.

tabela de produtos

Nessa tabela, encontramos diversas informações sobre uma variedade de produtos, incluindo uma coluna de marcas (Marca_Produto).

Suponha que desejamos descobrir quantos produtos existem para cada marca. Podemos realizar essa tarefa utilizando o Group By da seguinte forma:. 

SELECT
    Marca_Produto,
    COUNT(*)
FROM produtos
GROUP BY Marca_Produto;

Este processo é bastante simples. Utilizamos o comando Select, especificamos a coluna que desejamos agrupar, seguida da operação de contagem desejada. Indicamos a tabela de origem e, por fim, definimos o agrupamento (Group By) com base na tabela que queremos agrupar.

Ao executar essa consulta, obtemos uma tabela resumida que apresenta o total de produtos por marca.

Group By

O Group By possibilita a realização de diversos tipos de agrupamentos em tabelas, tornando-se assim uma ferramenta muito interessante para análise de dados.

O que é o Join no SQL?

O Join no SQL é uma cláusula fundamental para estabelecer relacionamentos entre tabelas e permitir a filtragem de dados. Por meio do Join, é possível relacionar duas tabelas, gerando assim uma terceira tabela que apresenta o resultado dessa relação.

Para ilustrar, considere a tabela de pedidos abaixo:

tabela de pedidos

Observa-se que esta tabela contém diversas colunas com IDs de lojas, produtos e clientes.

Essa configuração é conhecida como uma tabela dimensão, composta principalmente por IDs. Através desses IDs, é possível relacioná-la com outras tabelas do banco de dados para obter as informações desejadas.

Por exemplo, utilizando os IDs presentes na coluna ID_Loja, podemos relacioná-los com os IDs das lojas na tabela de Lojas, recuperando assim as informações associadas. O mesmo processo pode ser feito para o ID_Produto e o ID_Cliente.

Em situações como essas, utilizamos o JOIN para exibir essas relações, sendo o INNER JOIN o foco neste caso. Existem vários tipos de Joins, mas aqui abordaremos o INNER JOIN.

Por exemplo, selecionar as informações da tabela de pedidos, adicionando informações da tabela de produtos. Isso pode ser feito da seguinte forma:

SELECT * FROM pedidos
INNER JOIN produtos
ON pedidos.ID_Produto = produtos.ID_Produto;

Nesse código, selecionamos a tabela de origem das informações, especificamos o tipo de JOIN que utilizaremos (INNER JOIN) e a tabela com a qual queremos realizar o JOIN. Por fim, determinamos qual coluna da tabela de pedidos está se relacionando com qual coluna da tabela de produtos.

Ao executar esse código, obtemos uma tabela com diversas informações, incluindo todas as informações da tabela de pedidos e todas as informações da tabela de produtos.

Join

Inclusive temos duas colunas nomeadas ID_Produto e a partir da segunda coluna, são as informações referentes a tabela de produtos.

Entretanto, perceba que a tabela resultante é extensa e pouco otimizada, com diversas informações repetidas. É por isso que em bancos de dados reais, as tabelas são divididas para melhorar a otimização e acessamos as informações por meio de relacionamentos.

Não é necessário utilizar o INNER JOIN selecionando toda a tabela, como fizemos anteriormente. Podemos, em vez de usar um SELECT *, executar o comando da seguinte maneira:

SELECT
    pedidos.Data_Venda,
    pedidos.Receita_Venda,
    produtos.Marca_Produto
FROM pedidos
INNER JOIN produtos
ON pedidos.ID_Produto = produtos.ID_Produto;

Assim, estamos especificando quais colunas desejamos unir e visualizar na nossa tabela, indicando no SELECT o nome da tabela seguido do nome da coluna (nome_tabela.Nome_Coluna). Ao executar esse código, obtemos uma tabela mais concisa.

INNER JOIN

Combinação do GROUP BY com JOIN no SQL

Agora que revisamos como funcionam o Group By e o Join no SQL, vamos explorar como utilizar a combinação dessas duas cláusulas.

Ao analisar a última tabela gerada com o Join, notamos que ela consiste na tabela de pedidos com todas as linhas presentes, exibindo apenas três colunas: duas provenientes dela mesma e uma da junção com a tabela de produtos.

A partir dessa tabela, podemos realizar análises mais complexas, como calcular o total de receita por marca. Em vez de ter a receita para cada venda, podemos usar o Group By e agrupar essa tabela gerada com o Join com base nas marcas dos produtos.

SELECT
    produtos.Marca_Produto,
    SUM(pedidos.Receita_Venda)
FROM pedidos
INNER JOIN produtos
ON pedidos.ID_Produto = produtos.ID_Produto
GROUP BY produtos.Marca_Produto;

Ao executar essa combinação do Group By com Join no SQL, obteremos a tabela abaixo, que apresenta as marcas dos produtos e a soma da receita de venda para cada uma delas.

Group By com Join no SQL

Podemos otimizar ainda mais o código atribuindo aliases (apelidos) aos nomes das tabelas para evitar repetições. Podemos fazer isso adicionando o alias na frente do nome da tabela e substituindo-o nos lugares onde o nome da tabela era utilizado anteriormente.

O mesmo código poderia ser escrito assim:

SELECT
    pr.Marca_Produto,
    SUM(pe.Receita_Venda)
FROM pedidos pe
INNER JOIN produtos pr
ON pe.ID_Produto = pr.ID_Produto
GROUP BY pr.Marca_Produto;

Aqui, pe é o alias para a tabela pedidos e pr é o alias para a tabela produtos. O resultado obtido será equivalente à tabela gerada anteriormente.

Group By com Join no SQL

Conclusão – Group By com Join no SQL – Uma Combinação Poderosa

Nessa aula, exploramos a poderosa combinação entre o Group By e o Join no SQL. Ao aprender a utilizar essa ferramenta, você adquire uma eficiente habilidade para análises e trabalhos com bancos de dados.

Além disso, durante a aula, revisamos os conceitos de Group By e Join individualmente.

Ao dominar essa combinação, suas análises e atividades relacionadas a bancos de dados e tabelas se tornarão não apenas mais práticas, mas também mais avançadas e eficientes.

Hashtag Treinamentos

Para acessar outras publicações de SQL, clique aqui!


Quer aprender mais sobre SQL com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador