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 2 principais doadores em termos de valor total doado para cada programa, ordenados por programa?
 ###Tabelas: 
CREATE TABLE donors_ext (id INT, name VARCHAR(50), donation_amount DECIMAL(10,2), donation_date DATE, program VARCHAR(50)); INSERT INTO donors_ext (id, name, donation_amount, donation_date, program) VALUES (1, 'Alice', 500.00, '2022-02-01', 'Refugee Support'), (2, 'Bob', 300.00, '2022-03-10', 'Disaster Response');
SELECT name, program, SUM(donation_amount) AS total_donation, RANK() OVER (PARTITION BY program ORDER BY SUM(donation_amount) DESC) AS donation_rank FROM donors_ext GROUP BY name, program HAVING donation_rank <= 2 ORDER BY program;