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: Liste o número de horas de voluntariado por programa nos últimos 3 meses.
 ###Tabelas: 
CREATE TABLE programs (id INT, program_name VARCHAR(50), hours DECIMAL(10,2)); INSERT INTO programs (id, program_name, hours) VALUES (1, 'Program A', 50.0), (2, 'Program B', 100.0), (3, 'Program C', 75.0); CREATE TABLE volunteer_hours (id INT, program_id INT, volunteer_hours DECIMAL(10,2), hours_date DATE); INSERT INTO volunteer_hours (id, program_id, volunteer_hours, hours_date) VALUES (1, 1, 25.0, '2022-01-01'), (2, 2, 50.0, '2022-02-15'), (3, 3, 30.0, '2022-03-20');
SELECT p.program_name, SUM(vh.volunteer_hours) AS total_hours FROM programs p INNER JOIN volunteer_hours vh ON p.id = vh.program_id WHERE vh.hours_date >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH) GROUP BY p.program_name;