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: Quem são os 3 principais doadores para cada categoria de doação? E quanto eles doaram?
 ###Tabelas: 
CREATE TABLE Donors (DonorID INT, DonorName VARCHAR(255)); CREATE TABLE DonationCategories (CategoryID INT, CategoryName VARCHAR(255)); CREATE TABLE Donations (DonationID INT, DonorID INT, CategoryID INT, DonationAmount DECIMAL(10, 2));
SELECT DonorID, CategoryID, DonorName, DonationCategory, SUM(DonationAmount) AS TotalDonated, RANK() OVER (PARTITION BY CategoryID ORDER BY SUM(DonationAmount) DESC) AS DonorRank FROM Donations JOIN Donors ON Donations.DonorID = Donors.DonorID JOIN DonationCategories ON Donations.CategoryID = DonationCategories.CategoryID GROUP BY DonorID, CategoryID, DonorName, DonationCategory;