Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
HAVING | Agrupamento
SQL Intermediário
course content

Conteúdo do Curso

SQL Intermediário

SQL Intermediário

1. Agrupamento
2. Subconsultas Aninhadas
3. Juntando Tabelas
4. DDL e DML em SQL

HAVING

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

Verifica-se que alguns alunos fizeram exames adicionais quando deveriam fazer apenas um. A escola suspeita que eles tenham colado, pois cada aluno deveria ter apenas uma nota.

Fomos encarregados de obter os sobrenomes desses alunos e repassá-los à administração escolar para que tomem as medidas que considerarem 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 precisaremos da cláusula HAVING.

Vamos entender o que é e como usá-la, usando um exemplo da nossa tabela employee.

Digamos que precisamos recuperar os departamentos onde a média salarial dos funcionários é abaixo de $70.000 por ano.

Para alcançar isso, precisaremos usar uma função agregada e a cláusula HAVING.

Vejamos como podemos fazer isso:

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

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

Nota

Para usar a agregação de dados dentro da cláusula HAVING, precisamos ter agrupamento de dados em nossa consulta. Como na consulta acima, agrupamos os dados pela coluna department.

Vamos olhar para a sintaxe mais generalizada da cláusula HAVING e quando é melhor usá-la:

Vamos também entender brevemente a 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 dos dados, enquanto a cláusula HAVING é usada depois da agregação dos dados;
  2. A cláusula WHERE é escrita antes de GROUP BY, enquanto a cláusula HAVING é escrita depois de GROUP BY.

Estas são as duas principais diferenças que você precisa lembrar para o uso bem-sucedido da cláusula HAVING. Agora, vamos voltar à tarefa que nos foi dada pela escola.

Aqui está a prévia de uma tabela student_grades com a qual estamos trabalhando:

Tarefa

Precisa buscar os sobrenomes dos alunos que possuem múltiplas notas para a escola.

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

Nota:

Você deve ter apenas uma coluna com sobrenomes no resultado.

Tarefa

Precisa buscar os sobrenomes dos alunos que possuem múltiplas notas para a escola.

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

Nota:

Você deve ter apenas uma coluna com sobrenomes no resultado.

Mude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo

Tudo estava claro?

Seção 1. Capítulo 6
toggle bottom row

HAVING

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

Verifica-se que alguns alunos fizeram exames adicionais quando deveriam fazer apenas um. A escola suspeita que eles tenham colado, pois cada aluno deveria ter apenas uma nota.

Fomos encarregados de obter os sobrenomes desses alunos e repassá-los à administração escolar para que tomem as medidas que considerarem 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 precisaremos da cláusula HAVING.

Vamos entender o que é e como usá-la, usando um exemplo da nossa tabela employee.

Digamos que precisamos recuperar os departamentos onde a média salarial dos funcionários é abaixo de $70.000 por ano.

Para alcançar isso, precisaremos usar uma função agregada e a cláusula HAVING.

Vejamos como podemos fazer isso:

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

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

Nota

Para usar a agregação de dados dentro da cláusula HAVING, precisamos ter agrupamento de dados em nossa consulta. Como na consulta acima, agrupamos os dados pela coluna department.

Vamos olhar para a sintaxe mais generalizada da cláusula HAVING e quando é melhor usá-la:

Vamos também entender brevemente a 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 dos dados, enquanto a cláusula HAVING é usada depois da agregação dos dados;
  2. A cláusula WHERE é escrita antes de GROUP BY, enquanto a cláusula HAVING é escrita depois de GROUP BY.

Estas são as duas principais diferenças que você precisa lembrar para o uso bem-sucedido da cláusula HAVING. Agora, vamos voltar à tarefa que nos foi dada pela escola.

Aqui está a prévia de uma tabela student_grades com a qual estamos trabalhando:

Tarefa

Precisa buscar os sobrenomes dos alunos que possuem múltiplas notas para a escola.

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

Nota:

Você deve ter apenas uma coluna com sobrenomes no resultado.

Tarefa

Precisa buscar os sobrenomes dos alunos que possuem múltiplas notas para a escola.

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

Nota:

Você deve ter apenas uma coluna com sobrenomes no resultado.

Mude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo

Tudo estava claro?

Seção 1. Capítulo 6
toggle bottom row

HAVING

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

Verifica-se que alguns alunos fizeram exames adicionais quando deveriam fazer apenas um. A escola suspeita que eles tenham colado, pois cada aluno deveria ter apenas uma nota.

Fomos encarregados de obter os sobrenomes desses alunos e repassá-los à administração escolar para que tomem as medidas que considerarem 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 precisaremos da cláusula HAVING.

Vamos entender o que é e como usá-la, usando um exemplo da nossa tabela employee.

Digamos que precisamos recuperar os departamentos onde a média salarial dos funcionários é abaixo de $70.000 por ano.

Para alcançar isso, precisaremos usar uma função agregada e a cláusula HAVING.

Vejamos como podemos fazer isso:

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

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

Nota

Para usar a agregação de dados dentro da cláusula HAVING, precisamos ter agrupamento de dados em nossa consulta. Como na consulta acima, agrupamos os dados pela coluna department.

Vamos olhar para a sintaxe mais generalizada da cláusula HAVING e quando é melhor usá-la:

Vamos também entender brevemente a 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 dos dados, enquanto a cláusula HAVING é usada depois da agregação dos dados;
  2. A cláusula WHERE é escrita antes de GROUP BY, enquanto a cláusula HAVING é escrita depois de GROUP BY.

Estas são as duas principais diferenças que você precisa lembrar para o uso bem-sucedido da cláusula HAVING. Agora, vamos voltar à tarefa que nos foi dada pela escola.

Aqui está a prévia de uma tabela student_grades com a qual estamos trabalhando:

Tarefa

Precisa buscar os sobrenomes dos alunos que possuem múltiplas notas para a escola.

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

Nota:

Você deve ter apenas uma coluna com sobrenomes no resultado.

Tarefa

Precisa buscar os sobrenomes dos alunos que possuem múltiplas notas para a escola.

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

Nota:

Você deve ter apenas uma coluna com sobrenomes no resultado.

Mude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo

Tudo estava claro?

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

Verifica-se que alguns alunos fizeram exames adicionais quando deveriam fazer apenas um. A escola suspeita que eles tenham colado, pois cada aluno deveria ter apenas uma nota.

Fomos encarregados de obter os sobrenomes desses alunos e repassá-los à administração escolar para que tomem as medidas que considerarem 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 precisaremos da cláusula HAVING.

Vamos entender o que é e como usá-la, usando um exemplo da nossa tabela employee.

Digamos que precisamos recuperar os departamentos onde a média salarial dos funcionários é abaixo de $70.000 por ano.

Para alcançar isso, precisaremos usar uma função agregada e a cláusula HAVING.

Vejamos como podemos fazer isso:

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

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

Nota

Para usar a agregação de dados dentro da cláusula HAVING, precisamos ter agrupamento de dados em nossa consulta. Como na consulta acima, agrupamos os dados pela coluna department.

Vamos olhar para a sintaxe mais generalizada da cláusula HAVING e quando é melhor usá-la:

Vamos também entender brevemente a 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 dos dados, enquanto a cláusula HAVING é usada depois da agregação dos dados;
  2. A cláusula WHERE é escrita antes de GROUP BY, enquanto a cláusula HAVING é escrita depois de GROUP BY.

Estas são as duas principais diferenças que você precisa lembrar para o uso bem-sucedido da cláusula HAVING. Agora, vamos voltar à tarefa que nos foi dada pela escola.

Aqui está a prévia de uma tabela student_grades com a qual estamos trabalhando:

Tarefa

Precisa buscar os sobrenomes dos alunos que possuem múltiplas notas para a escola.

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

Nota:

Você deve ter apenas uma coluna com sobrenomes no resultado.

Mude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Seção 1. Capítulo 6
Mude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
We're sorry to hear that something went wrong. What happened?
some-alt