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

bookCláusula Having

A escola está muito agradecida pelo seu trabalho, e agora há uma nova tarefa para nós.

Acontece que alguns alunos fizeram provas adicionais quando deveriam ter feito apenas uma. A escola suspeita que eles estejam colando, pois cada aluno deveria ter apenas uma nota.

Nossa tarefa é obter os sobrenomes desses alunos e repassá-los para a administração da escola, para que tomem as medidas que julgarem necessárias.

Vamos pensar juntos sobre como podemos fazer isso. Você pode começar considerando que podemos fazer isso usando uma cláusula WHERE, e ficaria mais ou menos assim:

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

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. É aqui 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:

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

Recebemos um departamento em resposta utilizando a cláusula HAVING, onde definimos uma condição para a coluna pela qual agrupamos os dados.

Nota

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 apropriado 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:

  1. A cláusula WHERE é utilizada antes da agregação de dados, enquanto a cláusula HAVING é utilizada 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ê deve lembrar para utilizar a cláusula HAVING com sucesso. Agora, vamos retornar à tarefa proposta pela escola.

Tarefa

Swipe to start coding

Sua tarefa será buscar os sobrenomes dos estudantes que possuem múltiplas notas na escola.

Você só precisa recuperar os sobrenomes dos estudantes; não é necessário incluir a contagem de notas na resposta. Utilize a cláusula HAVING e a função agregadora COUNT() para realizar esta tarefa. Em seguida, ordene os sobrenomes em ordem alfabética.

Observação:

O resultado deve conter apenas uma coluna com os sobrenomes.

Instruções Resumidas

  • Recupere a coluna student_surname.
  • Agrupe os dados por student_surname.
  • Use a cláusula HAVING para filtrar os resultados com base em COUNT(grade) > 1.
  • Ordene os resultados por student_surname.

Solução

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

close

Awesome!

Completion rate improved to 4

bookCláusula Having

Deslize para mostrar o menu

A escola está muito agradecida pelo seu trabalho, e agora há uma nova tarefa para nós.

Acontece que alguns alunos fizeram provas adicionais quando deveriam ter feito apenas uma. A escola suspeita que eles estejam colando, pois cada aluno deveria ter apenas uma nota.

Nossa tarefa é obter os sobrenomes desses alunos e repassá-los para a administração da escola, para que tomem as medidas que julgarem necessárias.

Vamos pensar juntos sobre como podemos fazer isso. Você pode começar considerando que podemos fazer isso usando uma cláusula WHERE, e ficaria mais ou menos assim:

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

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. É aqui 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:

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

Recebemos um departamento em resposta utilizando a cláusula HAVING, onde definimos uma condição para a coluna pela qual agrupamos os dados.

Nota

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 apropriado 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:

  1. A cláusula WHERE é utilizada antes da agregação de dados, enquanto a cláusula HAVING é utilizada 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ê deve lembrar para utilizar a cláusula HAVING com sucesso. Agora, vamos retornar à tarefa proposta pela escola.

Tarefa

Swipe to start coding

Sua tarefa será buscar os sobrenomes dos estudantes que possuem múltiplas notas na escola.

Você só precisa recuperar os sobrenomes dos estudantes; não é necessário incluir a contagem de notas na resposta. Utilize a cláusula HAVING e a função agregadora COUNT() para realizar esta tarefa. Em seguida, ordene os sobrenomes em ordem alfabética.

Observação:

O resultado deve conter apenas uma coluna com os sobrenomes.

Instruções Resumidas

  • Recupere a coluna student_surname.
  • Agrupe os dados por student_surname.
  • Use a cláusula HAVING para filtrar os resultados com base em COUNT(grade) > 1.
  • Ordene 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!

close

Awesome!

Completion rate improved to 4
Seção 1. Capítulo 6
single

single

some-alt