Questão 47 · Informática: Banco de dados
Texto associado à questão
Nas próximas cinco questões, considere as tabelas T1, T2 e T3, cujas estruturas e instâncias são exibidas a seguir. O valor NULL deve ser tratado como unknown (desconhecido).
T1 T2 T3 A B C D A C E 1 3 100 42 1 100 20 2 2 110 55 1 110 40 4 2 120 33 2 120 10 2 100 NULL 2 110 10
Tomando como referência as tabelas T1, T2 e T3, descritas anteriormente, o comando SQL select t1.A, t2.C, sum(t3.E) soma from t1, t2, t3 where t1.B > 2 and t2.D < 55 and t3.E > 19 group by t1.A, t2.C produz um resultado que, sem contar a linha de títulos, exibe:
- A) duas linhas;
- B) três linhas;
- C) quatro linhas;
- D) seis linhas;
- E) nove linhas.
Marque a alternativa correta:
Gabarito: A
Gabarito definitivo divulgado pela banca FGV (BANESTES 2021).
Comentário
Gabarito: A.
A questão exige a análise do resultado de uma consulta SQL que envolve múltiplas tabelas, filtros, agrupamento e uma função de agregação. A resolução correta segue a ordem de execução lógica de uma consulta SQL:
FROMeWHERE(Filtragem): Primeiro, aplicamos os filtros a cada tabela para reduzir o universo de dados.- De
T1, a condiçãot1.B > 2seleciona apenas a linha(1, 3). - De
T2, a condiçãot2.D < 55seleciona as linhas(100, 42)e(120, 33). - De
T3, a condiçãot3.E > 19seleciona as linhas(1, 100, 20)e(1, 110, 40).
- De
Produto Cartesiano: O
FROM t1, t2, t3combina todas as linhas filtradas, resultando em um conjunto intermediário com1 (de T1) * 2 (de T2) * 2 (de T3) = 4linhas.GROUP BY(Agrupamento): Essas 4 linhas são então agrupadas com base nos valores das colunast1.Aet2.C. As combinações de(t1.A, t2.C)no conjunto intermediário são(1, 100)e(1, 120). Isso forma dois grupos distintos.SELECT(Resultado): Como a cláusulaGROUP BYgerou dois grupos, a consulta final terá duas linhas, uma para cada grupo, com o valor desum(t3.E)calculado para cada um.
(B) Incorreta. O agrupamento por (t1.A, t2.C) gera apenas dois grupos, não três.
(C) Incorreta. Quatro seria o número de linhas antes da aplicação do GROUP BY.
(D) Incorreta. Não há operação na consulta que resulte em seis linhas.
(E) Incorreta. Não há operação na consulta que resulte em nove linhas.
Dica: Em questões SQL com GROUP BY, resolva a consulta em etapas: 1º filtre com WHERE, 2º faça a junção (FROM), 3º identifique os grupos distintos (GROUP BY). O número de grupos distintos será o número de linhas do resultado final.
Fundamentos: Linguagem SQL: Cláusulas WHERE, FROM, GROUP BY, SELECT · Linguagem SQL: Funções de Agregação (SUM) · Linguagem SQL: Produto Cartesiano (Junção Implícita)
Comentário gerado pela Cravei IA a partir do enunciado e do gabarito definitivo divulgado pela banca, e conferido por uma verificação automática. A IA pode errar: o gabarito oficial sempre prevalece.
Fonte: prova FGV BANESTES 2021 (Desenvolvimento de Sistemas), questão 47, com o gabarito definitivo da banca. Comentário: Equipe Cravei · como fazemos e revisamos.