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: Encontre os 5 principais voluntários por horas totais contribuídas nos últimos 6 meses, incluindo suas informações de contato e o número de projetos em que trabalharam.
 ###Tabelas: 
CREATE TABLE volunteers (id INT, name VARCHAR(50), email VARCHAR(50), phone VARCHAR(15), total_hours DECIMAL(10,2), last_project_date DATE); INSERT INTO volunteers (id, name, email, phone, total_hours, last_project_date) VALUES (1, 'Alice Johnson', 'alicej@email.com', '555-123-4567', 35.5, '2022-03-20'), (2, 'Bob Brown', 'bobb@email.com', '555-987-6543', 70.0, '2022-02-01'); CREATE TABLE projects (id INT, title VARCHAR(50), volunteer_id INT, project_date DATE); INSERT INTO projects (id, title, volunteer_id, project_date) VALUES (1, 'Project A', 1, '2022-01-15'), (2, 'Project B', 2, '2022-02-05');
SELECT v.name, v.email, v.phone, v.total_hours, v.last_project_date, COUNT(p.id) AS projects_worked_on FROM volunteers v INNER JOIN projects p ON v.id = p.volunteer_id WHERE v.total_hours > 0 AND v.last_project_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH) GROUP BY v.id ORDER BY v.total_hours DESC LIMIT 5;