

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
Uma Prefeitura implantado um Data Warehouse para análise de dados financeiros com foco em receitas e despesas públicas. O modelo multidimensional utilizado possui uma tabela fato principal chamada FatosFinanceiros e três dimensões: Tempo, Categoria e Localidade cujas estruturas são:
Tabela Fato: FatosFinancairos
Dado | Tipo de Dado | Descrição |
IDFato | INT | Identificador único da transação |
IDTempo | INT | Chave estrangeira para a dimensão Tempo |
IDCategoria | INT | Chave estrangeira para a dimensão Categoria |
IDLocalidade | INT | Chave estrangeira para a dimensão Localidade |
Valor | DECIMAL(10,2) | Valor da receita ou despesa |
Dimensão: Tempo
Dado | Tipo de Dado | Descrição |
IDTempo | INT | Identificador único do período |
Ano | INT | Ano do registro |
Mes | INT | Mês do registro |
Dimensão: Categoria
Dado | Tipo de Dado | Descrição |
IDCategoria | INT | Identificador único da categoria |
NomeCategoria | VARCHAR (255) | Nome da categoria (ex.: Educação, Saúde) |
Dimensão: Localidade
Dado | Tipo de Dado | Descrição |
IDLocalidade | INT | Identificador único da localidade |
NomeLocalidade | VARCHAR (255) | Nome da localidade |
Um Auditor necessita fazer uma análise para identificar o valor total das receitas e despesas por ano e por categoria. À consulta deve ser otimizada para o modelo multidimensional cuja melhor prática, considerando o modelo descrito, é
SELECT t.Ano, l.NomeLocalidade, SUM(f.Valor) AS Total
FROM FatosFinanceiros f
JOIN Tempo t ON f.lDTempo = t.IDTempo
JOIN Localidade l ON f.lDLocalidade = l.IDLocalidade
GROUP BY t.Ano, l.NomeLocalidade;
SELECT t.Ano, c.NomeCategoria, SUM(f.Valor) AS Total
FROM FatosFinanceiros f
JOIN Tempo t ON f.IDTempo = t.IDTempo
JOIN Categoria c ON f.IDCategoria = c.IDCategoria
GROUP BY t.Ano, c.NomeCategoria;
SELECT l.NomeLocalidade, c.NomeCategoria, SUM(f.Valor) AS Total
FROM FatosFinanceiros f
JOIN Localidade l ON f.IDLocalidade = l.IDLocalidade
JOIN Categoria c ON f.IDCategoria = c.IDCategoria
GROUP BY l.NomeLocalidade, c.NomeCategoria;
SELECT t.Mes, c.NomeCategoria, SUM(f.Valor) AS Total
FROM FatosFinanceiros f
JOIN Tempo t ON f.IDTempo = t.IDTempo
JOIN Categoria c ON f.IDCategoria = c.IDCategoria
GROUP BY t.Mes, c.NomeCategoria;
SELECT c.NomeCategoria, l.NomeLocalidade, SUM(f.Valor) AS Total
FROM FatosFinanceiros f
JOIN Categoria c ON f.IDCategoria = c.IDCategoria
JOIN Localidade l ON f.IDLocalidade = l.IDLocalidade
GROUP BY c.NomeCategoria, l.NomeLocalidade;