Cláusula Having
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 análise interna adicional.
Vamos pensar juntos sobre como podemos fazer isso. Você pode começar considerando que podemos fazer isso usando uma cláusula WHERE, e ficaria algo assim:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Mas, como você pode ver, recebemos um erro indicando que não podemos usar funções de agregação dentro de uma cláusula WHERE. É nesse momento que precisamos 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:
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
Recebemos um departamento em resposta utilizando a cláusula HAVING, onde definimos uma condição para a coluna pela qual agrupamos os dados.
Para utilizar agregação de dados dentro da cláusula HAVING, é necessário haver agrupamento de dados na consulta. Como na consulta acima, agrupamos os dados pela coluna department.
Vamos analisar a sintaxe mais generalizada da cláusula HAVING e quando é mais adequado utilizá-la:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Vamos também compreender brevemente a principal diferença entre as cláusulas WHERE e HAVING e quando utilizar cada uma delas:
- A cláusula
WHEREé utilizada antes da agregação dos dados, enquanto a cláusulaHAVINGé utilizada após a agregação dos dados; - A cláusula
WHEREé escrita antes doGROUP BY, enquanto a cláusulaHAVINGé escrita após oGROUP BY.
Essas são as duas principais diferenças que você precisa lembrar para o uso correto da cláusula HAVING. Agora, vamos retornar à tarefa proposta pela escola.
Swipe to start coding
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 contêm 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, ordenada alfabeticamente.
Instruções Resumidas
- Recuperar a coluna
student_surname. - Agrupar os dados por
student_surname. - Utilizar a cláusula
HAVINGpara filtrar os resultados com base emCOUNT(grade) > 1. - Ordenar os resultados por
student_surname.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you show me how to use the HAVING clause to find students with multiple grade entries?
Can you explain why the HAVING clause works in this scenario but WHERE does not?
Can you provide an example query for the school task using HAVING?
Incrível!
Completion taxa melhorada para 4
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 análise interna adicional.
Vamos pensar juntos sobre como podemos fazer isso. Você pode começar considerando que podemos fazer isso usando uma cláusula WHERE, e ficaria algo assim:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Mas, como você pode ver, recebemos um erro indicando que não podemos usar funções de agregação dentro de uma cláusula WHERE. É nesse momento que precisamos 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:
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
Recebemos um departamento em resposta utilizando a cláusula HAVING, onde definimos uma condição para a coluna pela qual agrupamos os dados.
Para utilizar agregação de dados dentro da cláusula HAVING, é necessário haver agrupamento de dados na consulta. Como na consulta acima, agrupamos os dados pela coluna department.
Vamos analisar a sintaxe mais generalizada da cláusula HAVING e quando é mais adequado utilizá-la:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Vamos também compreender brevemente a principal diferença entre as cláusulas WHERE e HAVING e quando utilizar cada uma delas:
- A cláusula
WHEREé utilizada antes da agregação dos dados, enquanto a cláusulaHAVINGé utilizada após a agregação dos dados; - A cláusula
WHEREé escrita antes doGROUP BY, enquanto a cláusulaHAVINGé escrita após oGROUP BY.
Essas são as duas principais diferenças que você precisa lembrar para o uso correto da cláusula HAVING. Agora, vamos retornar à tarefa proposta pela escola.
Swipe to start coding
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 contêm 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, ordenada alfabeticamente.
Instruções Resumidas
- Recuperar a coluna
student_surname. - Agrupar os dados por
student_surname. - Utilizar a cláusula
HAVINGpara filtrar os resultados com base emCOUNT(grade) > 1. - Ordenar os resultados por
student_surname.
Solução
Obrigado pelo seu feedback!
single