top of page

[SQL] Como e quando usar Having?

Olá, tudo bem ?


Hoje vamos aprender como e quando usar a clausula having do SQL..


Antes de tudo, se inscreva em nossa Newsletter e seja avisado por e-mail quando um novo conteúdo for publicado!



Para facilitar o entendimento, vamos dar alguns exemplos, explicar a teória e propor alguns exercicios para você praticar e dominar esse comando.


Exemplo:

Para receber um adicional de performance, os executivos de vendas precisam realizar no minimo 50 vendas por mês. Você como um analista de dados, precisa identificar quem são esses vendedores e disponibilizar a informação para o supervisor de venda avaliar a produtividade do time e providenciar a bonificação.


Pergunta de negócio a ser respondida: Quem são os executivos que realizaram no minimo 50 vendas no mês?


tb_vendas = Tabela de vendas de uma empresa

( preview primeiras 3 linhas )


Campos:

  • vendedor_id - identificador unico do executivo

  • cliente_id - quem comprou o produto

  • data_venda - data ( quando )

  • venda_id - identificador unico da venda

vendedor_id

cliente_id

data_venda

venda_id

1

1

2023-01-30

21

2

10

2023-01-31

22

3

12

2023-01-31

23

Query SQL


SELECT
	vendedor_id,
	count(venda_id) as total_de_vendas
FROM
	tb_vendas
GROUP BY vendedor_id
HAVING total_de_vendas >= 50


Explicando a query:


  • count(venda_id) = Para usar o having, precisamos agrupar as informações de alguma forma. Nesse exemplo estamos realizando a contagem de vendas realizadas


  • total_de_vendas = renomeamos com o alias o count(venda_id) para total_de_vendas


  • HAVING total_de_vendas >= 50 = após o group by, usamos o having para filtrar o count, e retornar apenas os registros onde o count(venda_id) seja maior ou igual a 50


Como melhorar nossa consulta:

Coloque o filtro de data selecionando o mês - por exemplo só queremos resultados de jan/23



SELECT
	vendedor_id,
	count(venda_id) as total_de_vendas
FROM
	tb_vendas
GROUP BY vendedor_id
WHERE data_venda between '2023-01-01' and '2023-01-31'
HAVING total_de_vendas >= 50

Importante: O HAVING sempre vem depois do GROUP BY



Exercicios propostos:


Nesse exercicio, vamos usar o BigQuery. Para isso realize os passos abaixo:

  1. Acessar o link: https://console.cloud.google.com/bigquery

  2. Criar um novo projeto

  3. Acessar os publics datasets: https://cloud.google.com/bigquery/public-data


Exercício 1:

Qual time de baseball realizou menos de 10 partidas sendo o time da casa? quantas partidas ele realizou?


utilize o banco de dados: `bigquery-public-data.baseball.schedules`


Dica:

  • Antes de tudo, realize um select simples, com limit 10 para conhecer as colunas e estrutura dos dados na tabela.

SELECT * FROM `bigquery-public-data.baseball.schedules` LIMIT 10
  • Identifique quais colunas podem responder a pergunta proposta

  • Monte a consulta SQL e execute

  • Compare a query e resultado com a resolução apresentada abaixo.


Resolução dos exercícios:

Atenção tente realizar os exercicios propostos antes de visualizar a correção e resultados esperados.


Exercício 1:


Qual time de baseball realizou menos de 10 partidas sendo o time da casa? quantas partidas ele realizou?


SELECT 
  count(gameId) games,
  homeTeamName 
FROM `bigquery-public-data.baseball.schedules` 
group by 2
having games <= 10

resultado esperado: American League com apenas 1 jogo como mandante de jogo
resultado exercicio 1


Gostou desse conteúdo ? compartilhe com os amigos e siga nossa página no instagram @eunati_net = )



Se inscreva em nossa Newsletter e seja avisado por e-mail quando um novo conteúdo for publicado!



Até a próxima!

11 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page