Pular para o conteúdo principal

Questão de Banco de Dados — MySQL — Quadrix 2024

Banco de DadosMySQL
Código
qg354214
Banca
Quadrix
Órgão
IBICT
Ano
2024
Nível
Superior
Cargo
Tecnologista - Tecnologia da Informação

Imagem da questão

Com relação ao código SQL acima, no SGBD MySQL, julgue o item. Para que se mostre o número de artigos publicados por cada autor, pode‑se utilizar o comando a seguir. SELECT Autores.Nome AS NomeAutor, COUNT(*) AS NumeroArtigos FROM Autores INNER JOIN Autor_Artigo ON Autores.AutorID = Autor_Artigo.AutorID GROUP BY Autores.Nome;
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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”.

Consulta SQL com GROUP BY e contagem de artigos por autor

Gabarito: CERTO (letra C). A consulta apresentada está correta: ela faz um INNER JOIN entre Autores e Autor_Artigo, agrupa pelo nome do autor e conta quantos artigos cada um publicou, usando COUNT(*). A sintaxe está válida no MySQL e produz exatamente o resultado pedido.

O comando SELECT com GROUP BY é a forma padrão de agregar dados em SQL. Aqui, a consulta segue a estrutura clássica: seleciona a coluna Nome da tabela Autores e a função de agregação COUNT(*), que conta o número de linhas de cada grupo. O INNER JOIN com a tabela associativa Autor_Artigo garante que só sejam considerados os autores que possuem pelo menos um artigo vinculado — autores sem artigos não aparecem no resultado, pois não há correspondência na tabela de junção.

O GROUP BY Autores.Nome agrupa os registros pelo nome do autor. Como cada linha resultante do JOIN representa um vínculo entre um autor e um artigo, o COUNT(*) conta exatamente quantos artigos cada autor publicou. O apelido AS NumeroArtigos apenas dá um nome à coluna de contagem, sem afetar o resultado.

Um ponto importante: a consulta agrupa por Nome, não por AutorID. Se dois autores distintos tiverem o mesmo nome, eles seriam agrupados juntos, o que poderia distorcer a contagem. Em um banco bem modelado, o ideal seria agrupar por AutorID (a chave primária), mas a questão não menciona essa possibilidade, e a consulta apresentada atende ao que foi pedido: mostrar o número de artigos por autor.

A pegadinha aqui é sutil: a banca pode tentar confundir o candidato sugerindo que seria necessário usar LEFT JOIN para incluir autores sem artigos, ou que o COUNT(*) contaria algo errado. Mas, para o objetivo declarado — mostrar o número de artigos publicados por cada autor —, o INNER JOIN é suficiente e correto, pois autores sem publicações não têm artigos para contar.

Critério

INNER JOIN (consulta da questão)

LEFT JOIN (alternativa comum)

Autores sem artigos

Excluídos do resultado

Incluídos com contagem 0

Contagem por autor

COUNT(*) conta apenas artigos vinculados

COUNT(Autor_Artigo.ArtigoID) conta artigos; COUNT(*) contaria 1 para autor sem artigo

Uso no contexto da questão

Correto — atende ao pedido de "artigos publicados por cada autor"

Desnecessário — incluiria autores sem publicações, o que não é solicitado

Risco de distorção

Agrupa por Nome; homônimos seriam somados

Mesmo risco de agrupamento por Nome

Item — ✅ CERTO

A consulta está correta. O INNER JOIN entre Autores e Autor_Artigo combina cada autor com seus artigos, e o GROUP BY Autores.Nome agrupa os resultados por autor. O COUNT(*) conta as linhas de cada grupo, ou seja, o número de artigos de cada autor. A sintaxe é válida no MySQL e produz o resultado esperado.

SE LIGUE NESSA!

A consulta agrupa por Nome, não por AutorID. Se houver autores homônimos, eles seriam agrupados juntos. Em um banco bem modelado, o ideal seria agrupar pela chave primária, mas a questão não aborda essa possibilidade.

Gabarito: letra C (CERTO).

Link permanente: /questoes/qg354214