Abaixo está uma instrução que descreve uma tarefa de geração de SQL, combinada com uma entrada que fornece mais contexto sobre os esquemas de tabela disponíveis. Escreva o código SQL que responda adequadamente à solicitação
 ###Instrução: Qual é a classificação das cidades com base na alocação total de orçamento para todas as categorias, e qual é o orçamento total alocado para cada categoria nas 3 principais cidades?
 ###Tabelas: 
CREATE TABLE BudgetAllocation (CityId INT, Category VARCHAR(50), Amount DECIMAL(10,2)); INSERT INTO BudgetAllocation (CityId, Category, Amount) VALUES (1, 'Transportation', 5000000), (1, 'Infrastructure', 3000000), (1, 'Education', 4000000), (2, 'Transportation', 6000000), (2, 'Infrastructure', 5000000), (2, 'Education', 4500000), (3, 'Transportation', 7000000), (3, 'Infrastructure', 6500000), (3, 'Education', 5500000);
SELECT CityId, ROW_NUMBER() OVER (ORDER BY SUM(Amount) DESC) AS CityRank, SUM(Amount) AS TotalBudget FROM BudgetAllocation GROUP BY CityId HAVING CityRank <= 3;