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 valor total das doações e o número de voluntários para cada categoria de programa em H1 2023, e quantas categorias não tiveram atividade?
 ###Tabelas: 
CREATE TABLE ProgramCategories (ProgramCategoryID INT, ProgramName TEXT, Category TEXT); INSERT INTO ProgramCategories (ProgramCategoryID, ProgramName, Category) VALUES (1, 'Kids Education', 'Education'), (2, 'Medical Research', 'Health'); CREATE TABLE ProgramDonations (ProgramCategoryID INT, DonationAmount DECIMAL(10,2), DonationDate DATE); INSERT INTO ProgramDonations (ProgramCategoryID, DonationAmount, DonationDate) VALUES (1, 250.00, '2023-01-15'), (2, 450.00, '2023-03-30'); CREATE TABLE ProgramVolunteers (ProgramCategoryID INT, VolunteerCount INT); INSERT INTO ProgramVolunteers (ProgramCategoryID, VolunteerCount) VALUES (1, 15), (2, 25);
SELECT Category, SUM(DonationAmount) as TotalDonation, SUM(VolunteerCount) as NumVolunteers FROM ProgramCategories JOIN ProgramDonations ON ProgramCategories.ProgramCategoryID = ProgramDonations.ProgramCategoryID JOIN ProgramVolunteers ON ProgramCategories.ProgramCategoryID = ProgramVolunteers.ProgramCategoryID WHERE DonationDate BETWEEN '2023-01-01' AND '2023-06-30' GROUP BY Category HAVING SUM(DonationAmount) > 0 AND SUM(VolunteerCount) > 0;