Questão nº 86

Questão de Engenharia de Dados · FCC PMSP Analista TIC 2025 (nº 86)

FCC2025Analista de Planejamento e Desenvolvimento Organizacional - Tecnologia da Informação e ComunicaçãoEngenharia de Dados
Gabarito: Aver comentário ↓

Para atender aos requisitos de um departamento municipal de produtos agrícolas sobre a movimentação temporal entre locais dos produtos estocados, uma Analista criou e populou as seguintes tabelas Fato e Dimensões usando o modelo snowflake:

Tabela Fato:

```sql
CREATE TABLE FatoEstoque (
id INT PRIMARY KEY,
data DATE,
local_id INT,
produto_id INT,
volume INT
);
```

Tabelas Dimensões:

```sql
CREATE TABLE DimLocal (
local_id INT PRIMARY KEY,
nome_local VARCHAR(100),
endereco VARCHAR(255)
);

CREATE TABLE DimProduto (
produto_id INT PRIMARY KEY,
nome_produto VARCHAR(100),
categoria VARCHAR(100)
);

CREATE TABLE DimData (
data DATE PRIMARY KEY,
ano INT,
mes INT,
dia INT
);
```

A seguir, ela escreveu corretamente a seguinte consulta SQL, que somou os produtos estocados em cada local para os anos de 2023 e 2024 e ordenou os resultados do local mais movimentado para o menos movimentado:

Resposta comentada

Gabarito Alternativa A

Em SQL, para analisar dados de diferentes tabelas, usamos JOIN para conectá-las por colunas relacionadas. Para calcular totais, usamos funções de agregação como SUM(), e para agrupar esses totais por categorias, usamos GROUP BY. Para filtrar dados por condições específicas, usamos WHERE, e para ordenar os resultados, usamos ORDER BY.

  • (A) Correta: Esta consulta usa a sintaxe SQL padrão e correta para todos os requisitos. JOIN ... ON conecta as tabelas, SUM(f.volume) calcula o total de produtos, AS total_volume dá um nome ao resultado, WHERE d.ano IN (2023, 2024) filtra os anos desejados, GROUP BY l.nome_local agrupa os totais por local, e ORDER BY total_volume DESC ordena do maior para o menor volume.
  • (B) Incorreta: O uso de LIKE em JOIN DimLocal l LIKE f.local_id = l.local_id está incorreto; o correto é ON. Além disso, WHERE d.ano SUM (2023, 2024) está errado; SUM é uma função de agregação, não um operador de comparação, e o correto seria IN para verificar se o ano está na lista. (Armadilha da banca: Confunde LIKE (comparação de padrões) com ON (condição de junção) e SUM (agregação) com IN (verificação de lista), usando palavras-chave SQL em contextos errados.)
  • (C) Incorreta: ON(f.volume) está incorreto; a função de agregação para soma é SUM(). WHERE d.ano MAX(2023, 2024) também está errado; MAX é uma função de agregação, e o correto seria IN.
  • (D) Incorreta: FOR (f.volume) está incorreto; a função de agregação para soma é SUM(). JOIN DimLocal l WITH f.local_id = l.local_id está incorreto; o correto é ON. WITH é usado para Common Table Expressions (CTEs), não para condições de JOIN.
  • (E) Incorreta: SUM(f.volume) AT total_volume está incorreto; o correto para dar um alias é AS total_volume. JOIN DimLocal l IN f.local_id = l.local_id está incorreto; o correto é ON. WHERE d.ano SUM(2023, 2024) está errado; o correto seria IN.

Fonte: FCC PMSP Analista TIC 2025 Analista de Planejamento e Desenvolvimento Organizacional - Tecnologia da Informação e Comunicação (Caderno Tipo 001). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho