Questão de Banco de Dados — Visão (View) — FCC 2015
Banco de Dados›Visão (View)
Código
fc020557
Banca
FCC
Órgão
MPE-PB
Ano
2015
Nível
Superior
Cargo
Analista de Sistemas – Desenvolvedor
Foi criada uma view, que quando exibida por meio da instrução SELECT * FROM RelVendas; mostrou o seguinte resultado: Cidade Vendas Campinas 155000 Curitiba 40000 Rio de Janeiro 60000 Salvador 260000 São Paulo 120000Pode-se concluir corretamente que a view foi criada por meio da instrução
ACREATE VIEW RelVendas ASSELECT f.cidadeFilial Cidades, SUM(f.vendasFilial) Total VendasFROM filial f, loja 1WHERE 1.idLoja = f.idLojaGROUP BY f.cidadeFilial;
BCREATE VIEW RelVendas ASSELECT f.cidadeFilial Cidade, SUM(f.vendasFilial) Vendas FROM filial f, loja 1 WHERE f.idLoja = 1.idLojaGROUP BY f.cidadeFilial;
CCREATE VIEW RelVendas (SELECT f.cidadeFilial Cidade, SUM(f.vendasFilial) Vendas FROM filial f, loja 1 WHERE f.idLoja = 1.idLojaGROUP BY f.cidadeFilial);
GabaritoB — CREATE VIEW RelVendas AS
SELECT f.cidadeFilial Cidade, SUM(f.vendasFilial) Vendas
FROM filial f, loja 1 WHERE f.idLoja = 1.idLoja
GROUP BY f.cidadeFilial;
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”.
Visão (View) com agregação e JOIN
Gabarito: letra B. A única instrução que produz o resultado exibido pela view RelVendas é a que agrupa por cidadeFilial, soma as vendas e usa os nomes de coluna Cidade e Vendas, conforme a saída esperada. As demais alternativas apresentam erros de sintaxe, agrupamento ou nome de coluna.
A view deve somar os valores de vendasFilial por cidade, usando um JOIN entre as tabelas Filial e Loja para garantir que todas as filiais sejam consideradas (embora, no caso, todas as filiais tenham loja correspondente). O resultado mostra exatamente uma linha por cidade com o total correto.
Alternativa A — ❌ Incorreta
Utiliza o nome de coluna Cidades (plural) e Total Vendas (com espaço), que não correspondem ao resultado (onde aparece Cidade e Vendas). Além disso, a sintaxe Total Vendas sem delimitadores é inválida em SQL padrão.
Alternativa B — ✅ Correta ⟵ GABARITO
A instrução está correta:
SELECT f.cidadeFilial Cidade – gera a coluna com o nome exato do resultado.
SUM(f.vendasFilial) Vendas – agregação correta, alias sem espaço.
FROM filial f, loja 1 – embora o alias 1 seja atípico (numérico), é aceito em alguns SGBDs ou pode ser interpretado como 'l' (minúsculo), e o WHERE f.idLoja = 1.idLoja realiza o JOIN adequado.
GROUP BY f.cidadeFilial – agrupa por cidade, gerando uma linha por cidade com a soma.
Alternativa C — ❌ Incorreta
A sintaxe está errada: CREATE VIEW RelVendas ( ... ) – os parênteses em volta do SELECT são inválidos; o correto é CREATE VIEW ... AS SELECT ....
Alternativa D — ❌ Incorreta
GROUP BY f.idFilial agruparia por identificador de filial, e não por cidade. Cada filial tem seu próprio idFilial, portanto não haveria agregação por cidade, gerando múltiplas linhas para a mesma cidade (ou uma linha por filial, sem soma). O resultado esperado tem uma linha por cidade.
Alternativa E — ❌ Incorreta
Ausência de GROUP BY. A consulta retornaria cada filial individualmente (7 linhas), sem somar as vendas por cidade. O resultado exibido contém 6 linhas agregadas.
PEGA ESSA DICA!
Em questões de criação de VIEW com agregação, sempre verifique:
O GROUP BY deve estar na coluna que não é agregada (a cidade).
Os aliases das colunas no SELECT devem corresponder exatamente aos nomes mostrados no resultado.
A sintaxe do CREATE VIEW é CREATE VIEW nome AS <consulta>; – sem parênteses extras.