Aulas do bloco

← Aulas

SQL e DadosTrilha · etapa 99 min

HAVING e DISTINCT com GROUP BY

Vídeos desta etapa, na ordem do portal:

  1. Filtrando e Refinando Resultados com HAVING e DISTINCT · 9 min
Use o número do vídeo e o horário indicado como referência nos arquivos locais.

As etapas anteriores ensinaram a selecionar e filtrar linhas, ordenar resultados e calcular agregações por grupo. Agora HAVING permite escolher quais grupos ficam no resultado, e DISTINCT permite remover linhas duplicadas da projeção. Os exemplos combinam essas operações com os filtros já conhecidos.

O que foi falado

  1. WHERE filtra antes, HAVING filtra depois

    Vídeo 1 · 00:00:32

    WHERE filtra as linhas individuais antes de agrupar, por exemplo ficar só com os registros de um cliente. HAVING filtra o resultado já agrupado, por exemplo ficar só com os clientes que somaram mais de 5000. Tentar filtrar a soma com WHERE não funciona, depois de agregar tem que usar HAVING.

  2. Ordem WHERE → GROUP BY → HAVING

    Vídeo 1 · 00:01:33

    Na consulta que usa essas três cláusulas, a ordem escrita é WHERE ... GROUP BY ... HAVING .... O filtro de linhas ocorre antes da agregação; depois, HAVING escolhe os grupos que atendem à condição. Por exemplo, WHERE pode selecionar as vendas de um ano antes de somar, e HAVING pode manter apenas categorias cuja soma supera um limite.

  3. DISTINCT tira duplicados

    Vídeo 1 · 00:01:41

    SELECT DISTINCT remove linhas duplicadas do resultado. Com uma coluna, cada valor aparece uma vez; com várias, cada combinação de valores aparece uma vez. GROUP BY também pode produzir valores únicos, mas DISTINCT expressa diretamente a intenção de deduplicar quando você não precisa calcular agregações.

    SQL
    SELECT DISTINCT year
    FROM tabela
  4. Anos com soma maior que 30 usando HAVING

    Vídeo 1 · 00:02:39

    A consulta agrupa por year e soma precipitation com SUM. HAVING SUM(precipitation) > 30 mantém somente os anos cujo total supera 30. AS cria o apelido Total precipitation, escrito entre aspas duplas porque contém um espaço.

    SQL
    SELECT year, SUM(precipitation) AS "Total precipitation"
    FROM tabela
    GROUP BY year
    HAVING SUM(precipitation) > 30
  5. Estações únicas com DISTINCT sem GROUP BY

    Vídeo 1 · 00:06:15

    SELECT DISTINCT StationNumber FROM tabela lista cada valor de StationNumber uma só vez. Não há soma nem contagem: a intenção é deduplicar a coluna. GROUP BY poderia agrupar os mesmos valores, mas DISTINCT comunica esse objetivo de forma direta.

    SQL
    SELECT DISTINCT StationNumber
    FROM tabela

Conceitos da aula

  • WHERE
  • GROUP BY
  • HAVING
  • DISTINCT
  • SUM
  • COUNT
  • AVG
  • Alias (AS)

Reforce este assunto

7 exercíciosComeçar →