Conteúdo do Curso
SQL Intermediário
SQL Intermediário
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:
SELECT 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
. É 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:
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
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 colunadepartment
.
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:
- A cláusula
WHERE
é usada antes da agregação dos dados, enquanto a cláusulaHAVING
é usada depois da agregação dos dados; - A cláusula
WHERE
é escrita antes deGROUP BY
, enquanto a cláusulaHAVING
é escrita depois deGROUP 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.
Obrigado pelo seu feedback!
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:
SELECT 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
. É 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:
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
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 colunadepartment
.
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:
- A cláusula
WHERE
é usada antes da agregação dos dados, enquanto a cláusulaHAVING
é usada depois da agregação dos dados; - A cláusula
WHERE
é escrita antes deGROUP BY
, enquanto a cláusulaHAVING
é escrita depois deGROUP 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.
Obrigado pelo seu feedback!
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:
SELECT 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
. É 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:
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
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 colunadepartment
.
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:
- A cláusula
WHERE
é usada antes da agregação dos dados, enquanto a cláusulaHAVING
é usada depois da agregação dos dados; - A cláusula
WHERE
é escrita antes deGROUP BY
, enquanto a cláusulaHAVING
é escrita depois deGROUP 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.
Obrigado pelo seu feedback!
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:
SELECT 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
. É 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:
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
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 colunadepartment
.
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:
- A cláusula
WHERE
é usada antes da agregação dos dados, enquanto a cláusulaHAVING
é usada depois da agregação dos dados; - A cláusula
WHERE
é escrita antes deGROUP BY
, enquanto a cláusulaHAVING
é escrita depois deGROUP 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.