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: Quantos voluntários participaram de cada programa por mês em 2021?
 ###Tabelas: 
CREATE TABLE VolunteerHours (VolunteerID INT, ProgramID INT, Hours DECIMAL(5,2), HourDate DATE); INSERT INTO VolunteerHours (VolunteerID, ProgramID, Hours, HourDate) VALUES (1, 1, 5, '2021-01-15'), (2, 2, 3, '2021-03-02'), (1, 1, 4, '2021-04-30'), (3, 3, 2, '2021-01-01'); CREATE TABLE Programs (ProgramID INT, ProgramName TEXT); INSERT INTO Programs (ProgramID, ProgramName) VALUES (1, 'Education'), (2, 'Health'), (3, 'Environment');
SELECT ProgramID, DATE_FORMAT(HourDate, '%Y-%m') as Month, COUNT(DISTINCT VolunteerID) as NumVolunteers FROM VolunteerHours JOIN Programs ON VolunteerHours.ProgramID = Programs.ProgramID GROUP BY ProgramID, Month;