Considere que no TRT exista, em um banco de dados, a tabela TRAB que possui como campos: nome, sexo, salario de vários trabalhadores. Um Técnico foi solicitado a escrever um comando SQL para obter a média salarial dos trabalhadores do sexo FEMININO. O comando correto é:
ASELECT sexo, AVG(salario) as MediaSalarial FROM TRAB GROUP BY sexo;
BSELECT AVG(salario) FROM TRAB WHERE sexo=’FEMININO’;
CSELECT sexo, AVG(salario) FROM TRAB GROUP BY sexo="FEMININO";
DSELECT * FROM TRAB WHERE sexo='FEMININO' as AVG(salario);
ESELECT sexo="FEMININO" FROM TRAB WHERE AVG(salario);
Revelar gabarito e comentário▾
GabaritoB — SELECT AVG(salario) FROM TRAB WHERE sexo=’FEMININO’;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
SQL: Função de Agregação AVG e Cláusula WHERE
Gabarito: letra B. Para obter a média salarial apenas dos trabalhadores do sexo FEMININO, o comando deve filtrar os registros com WHERE e aplicar a função AVG sobre a coluna salario. A sintaxe correta é SELECT AVG(coluna) FROM tabela WHERE condição, conforme descrito na documentação do SQL.
A banca testa o conhecimento da função de agregação AVG e a necessidade da cláusula WHERE para restringir o grupo calculado. Vamos analisar cada alternativa:
Alternativa A — ❌ Incorreta
SELECT sexo, AVG(salario) as MediaSalarial FROM TRAB GROUP BY sexo; Esta consulta calcula a média salarial para cada sexo (agrupando por sexo), retornando duas linhas (FEMININO e MASCULINO). A questão pede apenas a média dos trabalhadores do sexo FEMININO, não um agrupamento. Portanto, está incorreta.
Alternativa B — ✅ Correta ⟵ GABARITO
SELECT AVG(salario) FROM TRAB WHERE sexo='FEMININO'; Exatamente o que se pede: a função AVG calcula a média da coluna salario, e a cláusula WHERE restringe o cálculo apenas às linhas onde sexo é igual a 'FEMININO'. Sintaxe correta e sem redundâncias.
Alternativa C — ❌ Incorreta
SELECT sexo, AVG(salario) FROM TRAB GROUP BY sexo="FEMININO"; A cláusula GROUP BY não aceita uma condição de igualdade como argumento; espera-se uma lista de colunas. A condição deve ser aplicada com WHERE antes do GROUP BY. Além disso, mesmo que houvesse um WHERE, o GROUP BY feminino seria inadequado. Portanto, comando inválido.
Alternativa D — ❌ Incorreta
SELECT * FROM TRAB WHERE sexo='FEMININO' as AVG(salario); O alias as AVG(salario) está posicionado incorretamente. O alias é usado para renomear colunas no SELECT, não após a cláusula WHERE. Além disso, SELECT * retorna todas as colunas, não a média. Comando sintática e semanticamente errado.
Alternativa E — ❌ Incorreta
SELECT sexo="FEMININO" FROM TRAB WHERE AVG(salario); Aqui, sexo="FEMININO" no SELECT retorna um valor booleano (1 ou 0), não a média. E a cláusula WHERE AVG(salario) é inválida, pois funções de agregação não podem ser usadas diretamente no WHERE sem um GROUP BY. Comando absurdamente incorreto.
NÃO CAIA NESSA!
Lembre-se da ordem de execução do SQL: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY. Funções de agregação (AVG, SUM, COUNT, etc.) atuam sobre grupos; quando não há GROUP BY, elas agem sobre todas as linhas que atendem ao WHERE. Para filtrar grupos, use HAVING. A principal pegadinha desta questão é confundir a necessidade de GROUP BY com a filtragem simples por WHERE.