Alternativa B - SELECT SEXO, COUNT(*) FROM FUNCIONARIO GROUP BY SEXO;
Para resolver este problema, precisamos utilizar a estrutura de consulta SQL que permite agrupar dados e realizar cálculos sobre esses grupos.
Análise da Solução
A cláusula GROUP BY é utilizada para reunir linhas que têm os mesmos valores em colunas específicas. Neste caso, queremos separar os funcionários por seu gênero (Sexo) e contar quantos há em cada grupo.
A estrutura correta de uma consulta com agregação é:
SELECT: Escolher as colunas que desejamos ver (o Sexo) e a função de agregação (Contagem).FROM: Indicar a tabela onde os dados estão (FUNCIONARIO).GROUP BY: Especificar a coluna pela qual os dados devem ser organizados (SEXO).
A alternativa B aplica exatamente essa lógica:
- Seleciona a coluna
SEXO. - Conta o número de registros com
COUNT(*). - Agrupa os resultados utilizando
GROUP BY SEXO.
Isso resultará em uma tabela com duas linhas (assumindo apenas Masculino e Feminino), mostrando o nome do sexo e a quantidade de pessoas nele.
Por que as outras estão incorretas?
| Alternativa | Erro Principal |
|---|
| A | Usa WHERE incorretamente. A cláusula WHERE serve para filtrar linhas antes do agrupamento, mas não aceita apenas o nome da coluna sem uma condição (ex: WHERE SEXO = 'M'). |
| C | Funções de agregação como COUNT() não podem ser usadas na cláusula WHERE. Se fosse necessário filtrar após o agrupamento, deveria usar HAVING. |
| D | Faz a contagem total de todos os funcionários de uma vez só, sem separar por sexo, pois não utiliza GROUP BY. |
| E | Utiliza ORDER em vez de ORDER BY. Além disso, sem GROUP BY, o SQL não saberia como associar o COUNT(*) a cada linha individual de SEXO. |
Portanto, a alternativa B é a única sintaticamente correta e logicamente adequada para o objetivo proposto.