SóProvas


ID
770458
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

A execução da consulta SQL

SELECT departamento, AVG (salario)
FROM empregado
WHERE AVG (salario) > 2000
GROUP BY departamento;

terá como resultado a média dos salários dos empregados agrupada por departamento, se essa média for maior que 2.000.


Alternativas
Comentários
  • Já que estamos usando função de agrupamento AVG deveriamos usar uma clausula HAVING como condicional e não o WHERE tradicional.
  • Só mais uma observação:
    Não pode ter função de agrupamento (como AVG, MIN, MAX, COUNT) na clausula WHERE.
  • O correto seria:
    SELECT departamento, AVG (salario)
    FROM empregado
    GROUP BY departamento
    HAVING AVG (salario) > 2000;
  • Apenas para clarear as idéias, o WHERE pode ser utilizado em consultas onde existam funções de agregação, não podem entretanto ser utilizado na mesma ''linha'', isto é, as funções de agregação não podem estar juntas, coladas do WHERE

    Consulta simples:
    SELECT COL1, COL2,...,COLN
    FROM NOME_TABELA
    WHERE (expressão lógica)
    GROUP BY (atributos de agrupamento)
    HAVING (condição de agrupamento)
    ORDER BY (lista de atributos)

    Where: filtra antes do agrupamento.
    Having: filtra  depois do agrupamento
    Como a questão diz :
    terá como resultado a média dos salários dos empregados agrupada por departamento, se essa média for maior que 2.000.
    Ela quer saber do resultado após o agrupamento, para se ter esse resultado ai seria como o já mencionado pelos colegas acima, entretanto com a cláusula where antes, implicaria no agrupamento apenas dos resultados que satisfizessem(palavra feia) a condição where.

    Slide das aulas de Linguagem e Manipulação de Dados do Prof. Marcio Vitorino
  • Todas as funções de agrupamento pedem Having!