Questão FC369563
Considere que você esteja trabalhando com bancos de dados que contêm informações sobre livros e autores utilizando o SGBD SQLServer. Analise o script a seguir. CREATE TABLE #Livros
Sistema de Gerenciamento de Banco de Dados (SGBD)
FGV · 2024
Considere que você esteja trabalhando com bancos de dados que contêm informações sobre livros e autores utilizando o SGBD SQLServer.
Analise o script a seguir.
CREATE TABLE #Livros (
LivroID INT,
Titulo VARCHAR(100)
);
CREATE TABLE #Autores (
Nome VARCHAR(100),
LivroID INT
);
Avalie se os itens a seguir apresentam a escrita correta em uma consulta SQL nesse banco, que faça um JOIN entre as tabelas de livros e autores, em que cada livro é listado junto com uma lista de todos os seus autores (nomes de autores agregados em uma única String).
I. SELECT L.Titulo, STRING_AGG(A.Nome, ', ') AS
Autores FROM #Livros L
INNER JOIN #Autores A ON L.LivroID = A.LivroID
GROUP BY L.Titulo;
II. SELECT L.Titulo, GROUP_CONTACT(A.Nome, ', ') AS
Autores FROM Livros L
JOIN Autores A ON L.LivroID = A.LivroID
GROUP BY L.AutorID;
III. SELECT L.Titulo, STRING_AGG(A.Nome) AS
Autores FROM Livros L
JOIN Autores A ON L.LivroID = A.LivroID
GROUP BY L.Titulo
IV. SELECT L.Titulo, STRING_AGG(A.Nome) AS Autores FROM
#Livros L
LEFT JOIN #Autores A ON L.LivroID = A.LivroID
GROUP BY L.Titulo, A.Nome;
A escrita dessa consulta SQL está correta em
- I, apenas.
- IV, apenas.
- I e III, apenas.
- I e IV, apenas.
- I, III e IV.
Mostrar resposta e comentário
Gabarito
A
Comentário do professor
A alternativa I está correta porque utiliza corretamente o agregador nativo do SQL Server para concatenar valores: STRING_AGG(A.Nome, ', '), fornecendo o separador e retornando uma única string com os autores por livro.
O JOIN entre #Livros e #Autores é feito pela chave de relacionamento (LivroID), e a cláusula GROUP BY agrupa os registros por título, permitindo a agregação dos nomes. Em bancos SQL, toda coluna não agregada presente no SELECT deve constar no GROUP BY — aqui L.Titulo atende a essa regra.
Observação prática: é mais robusto agrupar pelo identificador da entidade (por exemplo, LivroID) quando títulos não são únicos. Ainda assim, a sintaxe apresentada na alternativa I é válida e executável no SQL Server.
Conteúdo do catálogo FC Concursos · Atualizado em