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: Quais programas tiveram as maiores doações totais na primeira metade deste ano?
 ###Tabelas: 
CREATE TABLE Donations (DonationID INT, DonorID INT, ProgramID INT, Amount DECIMAL(10,2), DonationDate DATE);
SELECT p.ProgramName, SUM(d.Amount) FROM Donations d INNER JOIN Programs p ON d.ProgramID = p.ProgramID WHERE d.DonationDate >= DATEADD(year, DATEDIFF(year, 0, GETDATE()) - 1, 0) AND d.DonationDate < DATEADD(year, DATEDIFF(year, 0, GETDATE()), 6) GROUP BY p.ProgramName ORDER BY SUM(d.Amount) DESC;