Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Cláusula Having | Agrupamento
SQL Intermediário
Seção 1. Capítulo 6
single

single

Cláusula Having

Deslize para mostrar o menu

O sistema de informações escolares está sendo revisado para garantir a consistência e precisão dos dados. Como parte dessa revisão, uma nova tarefa de análise de dados foi atribuída.

Durante verificações de rotina, foi descoberto que alguns registros de alunos contêm mais de uma entrada de nota, mesmo que o sistema tenha sido projetado para armazenar apenas uma nota por aluno.

Sua tarefa é ajudar a identificar esses casos para uma revisão interna adicional.

Pense em como você pode fazer isso. Você pode começar considerando que é possível realizar essa tarefa utilizando uma cláusula WHERE, e ela ficaria parecida com isto:

123
SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1

Mas, como você pode ver, ocorre um erro indicando que não é possível usar funções de agregação dentro de uma cláusula WHERE. É nesse caso que você precisará da cláusula HAVING.

Suponha que seja necessário obter os departamentos onde o salário médio dos funcionários é inferior a $70.000 por ano. Para isso, será necessário utilizar uma função de agregação e a cláusula HAVING:

1234
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000

O resultado é um departamento na resposta utilizando a cláusula HAVING, onde uma condição é definida para a coluna utilizada na agregação dos dados.

Note
Nota

Para utilizar agregação de dados dentro da cláusula HAVING, é necessário que haja agrupamento de dados na consulta. Como na consulta acima, os dados foram agrupados pela coluna department.

A seguir, uma sintaxe mais generalizada da cláusula HAVING e quando é mais indicada sua utilização:

SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)

-- This will cause an error

Aqui está uma breve análise da principal diferença entre as cláusulas WHERE e HAVING e quando usar cada uma delas:

  1. A cláusula WHERE é usada antes da agregação de dados, enquanto a cláusula HAVING é usada após a agregação de dados;
  2. A cláusula WHERE é escrita antes do GROUP BY, enquanto a cláusula HAVING é escrita após o GROUP BY.

Essas são as duas principais diferenças que você precisa lembrar para o uso correto da cláusula HAVING. Agora, retorne à tarefa dada pela escola.

Tarefa

Deslize para começar a programar

Alguns alunos aparecem várias vezes nos registros de notas, o que indica entradas duplicadas ou inesperadas no sistema.

Você precisa recuperar os sobrenomes de todos os alunos cujos registros contenham mais de uma entrada de nota. O resultado será utilizado pela administração escolar para revisar e corrigir os dados, se necessário.

Retorne apenas a lista de sobrenomes que atendem a essa condição, ordenados em ordem alfabética.

Instruções Resumidas

  • Recuperar a coluna student_surname.
  • Agrupar os dados por student_surname.
  • Utilizar a cláusula HAVING para filtrar os resultados com base em COUNT(grade) > 1.
  • Ordenar os resultados por student_surname.

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 6
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

some-alt