Ainda sobre o esquema anterior, qual SQL correto retorna. Quantos intérpretes há por país?
ASelect ALL nomeArtistico FROM pais.
BSELECT COUNT(*) AS [Número de Intérpretes]FROM Interprete
CSELECT país, COUNT(*) AS [Número de Intérpretes]FROM InterpreteGROUP BY país
DSELECT COUNT(*)FROM NomeArtisticoGROUP BY país
ESELECT país AS [Número de Intérpretes]FROM InterpreteGROUP BY país
Revelar gabarito e comentário▾
GabaritoC — SELECT país, COUNT(*) AS [Número de Intérpretes]
FROM Interprete
GROUP BY país
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: contagem agrupada com GROUP BY
Gabarito: letra C. Para responder "quantos intérpretes há por país", o SQL precisa (1) contar registros da tabela Interprete com a função de agregação COUNT(*) e (2) agrupar esse resultado por país com a cláusula GROUP BY país. A alternativa C é a única que combina exatamente esses dois elementos — a contagem e o agrupamento pela coluna correta.
A pergunta "quantos X há por Y" é o padrão clássico de consulta com agregação e agrupamento. A função COUNT(*) conta o número de linhas de um conjunto de resultados, e o GROUP BY divide esse conjunto em grupos — um para cada valor distinto da coluna indicada. Quando as duas coisas aparecem juntas, o COUNT(*) é calculado separadamente para cada grupo, produzindo exatamente a contagem por categoria. No caso, cada linha da tabela Interprete representa um intérprete, e o agrupamento por país faz o banco contar quantos intérpretes existem em cada país.
A ordem lógica de execução do SQL é importante para entender por que a alternativa C funciona: o banco primeiro lê a tabela (FROM), depois agrupa as linhas (GROUP BY) e só então calcula as funções de agregação (COUNT(*)) para cada grupo. É por isso que a coluna país pode aparecer no SELECT junto com a contagem — ela é a chave do agrupamento. Se a consulta tentasse selecionar uma coluna que não está no GROUP BY nem dentro de uma função de agregação, o banco retornaria erro, pois não saberia qual valor exibir para o grupo.
A pegadinha desta questão está em duas frentes. A primeira é a alternativa A, que usa SELECT ALL — um comando que não existe no SQL padrão (o correto seria SELECT * ou SELECT ALL coluna, mas mesmo assim não faria contagem). A segunda é a alternativa D, que conta a coluna errada (NomeArtistico em vez de Interprete) e ainda agrupa por país sem essa coluna existir na tabela NomeArtistico. A alternativa E faz o agrupamento, mas esquece a contagem — retorna apenas os países, sem o número de intérpretes. A alternativa B conta todos os intérpretes, mas sem agrupar por país, retornando um único total geral.
Guarde o critério decisivo: para responder "quantos por categoria", a consulta precisa ter uma função de agregação (COUNT, SUM, AVG, MIN, MAX) e a cláusula GROUP BY com a coluna da categoria. É exatamente essa combinação que separa a alternativa correta das demais.
1FROM Interprete
2GROUP BY país
3COUNT(*) por grupo
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
SELECT ALL nomeArtistico FROM pais — além de ALL não ser um comando válido nesse contexto (o correto seria SELECT * ou SELECT ALL nomeArtistico), a consulta não faz nenhuma contagem e não agrupa por país. Ela apenas listaria os valores da coluna nomeArtistico da tabela pais, o que não responde à pergunta.
Alternativa B — ❌ Incorreta
SELECT COUNT(*) AS [Número de Intérpretes] FROM Interprete — esta consulta conta corretamente o número total de intérpretes, mas sem agrupar por país. O resultado seria um único número (o total de intérpretes de todos os países), não a contagem por país. Falta a cláusula GROUP BY país.
Alternativa C — ✅ Correta ⟵ GABARITO
SELECT país, COUNT(*) AS [Número de Intérpretes] FROM Interprete GROUP BY país — esta é a consulta correta. Ela seleciona a coluna país, conta as linhas da tabela Interprete com COUNT(*) e agrupa o resultado por país com GROUP BY país. O resultado é uma linha para cada país, com o número de intérpretes correspondente.
Alternativa D — ❌ Incorreta
SELECT COUNT(*) FROM NomeArtistico GROUP BY país — dois erros: (1) a tabela consultada é NomeArtistico, mas a pergunta é sobre intérpretes (a tabela correta é Interprete); (2) a cláusula GROUP BY país referencia uma coluna país que não existe na tabela NomeArtistico, o que geraria erro de execução.
Alternativa E — ❌ Incorreta
SELECT país AS [Número de Intérpretes] FROM Interprete GROUP BY país — esta consulta agrupa corretamente por país, mas não faz nenhuma contagem. Ela apenas retornaria a lista de países distintos, sem o número de intérpretes de cada um. O alias [Número de Intérpretes] é enganoso, pois a coluna país não contém contagens.
NÃO CAIA NESSA!
A banca explora a confusão entre "contar" e "agrupar". As alternativas B e E fazem cada uma metade do trabalho — B conta sem agrupar, E agrupa sem contar. O candidato que reconhece que precisa das duas coisas juntas (COUNT + GROUP BY) acerta de imediato. Além disso, a alternativa D troca a tabela Interprete por NomeArtistico, testando se o candidato lê o enunciado com atenção.
PEGA ESSA DICA!
Para questões de "quantos por categoria", monte mentalmente o esqueleto da consulta: SELECT categoria, COUNT(*) FROM tabela GROUP BY categoria. Se a alternativa não tiver exatamente essa estrutura — com a função de agregação E o GROUP BY na coluna certa —, ela está errada. Treine identificando qual coluna é a "categoria" (o que varia) e qual é o "item contado" (cada linha da tabela).