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 voluntários que se voluntariaram para cada programa, particionados por mês e ano fiscal.
 ###Tabelas: 
CREATE TABLE Programs (ProgramID int, Name varchar(50), Location varchar(50)); CREATE TABLE Volunteers (VolunteerID int, Name varchar(50), ProgramID int, VolunteerDate date); INSERT INTO Programs (ProgramID, Name, Location) VALUES (1, 'Green Cities', 'USA'), (2, 'Clean Water', 'Brazil'); INSERT INTO Volunteers (VolunteerID, Name, ProgramID, VolunteerDate) VALUES (1, 'Alex', 1, '2022-01-01'), (2, 'Jessica', 1, '2022-02-01'), (3, 'Roberto', 2, '2022-03-01'), (4, 'Maria', 2, '2022-07-01'), (5, 'Steve', 1, '2022-10-01');
SELECT P.Name, DATE_FORMAT(V.VolunteerDate, '%Y-%m') AS VolunteerMonth, DATE_FORMAT(V.VolunteerDate, '%Y') AS FiscalYear, COUNT(V.VolunteerID) OVER (PARTITION BY P.ProgramID, FiscalYear, MONTH(V.VolunteerDate)) AS Volunteers FROM Programs P JOIN Volunteers V ON P.ProgramID = V.ProgramID;