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 é o número total de horas de voluntariado e o valor total das doações por programa, com base nas tabelas 'VolunteerHours', 'Volunteers', 'Donations' e 'Donors'?
 ###Tabelas: 
CREATE TABLE VolunteerHours (HourID INT, VolunteerID INT, ProgramID INT, Hours DECIMAL(10,2)); CREATE TABLE Donations (DonationID INT, DonorID INT, ProgramID INT, Amount DECIMAL(10,2)); CREATE TABLE Volunteers (VolunteerID INT, Name TEXT); CREATE TABLE Donors (DonorID INT, Name TEXT); INSERT INTO VolunteerHours (HourID, VolunteerID, ProgramID, Hours) VALUES (1, 1, 1, 5.00), (2, 2, 1, 7.00), (3, 3, 2, 9.00); INSERT INTO Donations (DonationID, DonorID, ProgramID, Amount) VALUES (1, 1, 1, 200.00), (2, 1, 1, 300.00), (3, 2, 2, 400.00); INSERT INTO Volunteers (VolunteerID, Name) VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie'); INSERT INTO Donors (DonorID, Name) VALUES (1, 'John Doe'), (2, 'Jane Smith');
SELECT VolunteerPrograms.ProgramID, SUM(VolunteerHours.Hours) as TotalHours, SUM(Donations.Amount) as TotalDonation FROM VolunteerPrograms INNER JOIN VolunteerHours ON VolunteerPrograms.ProgramID = VolunteerHours.ProgramID INNER JOIN Donations ON VolunteerPrograms.ProgramID = Donations.ProgramID GROUP BY VolunteerPrograms.ProgramID;