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: Quais são os nomes dos programas de engajamento comunitário no Canadá com mais de 3 eventos nos últimos 3 anos e uma média de participantes maior que 50?
 ###Tabelas: 
CREATE TABLE CommunityPrograms (id INT, name VARCHAR(255), country VARCHAR(255), UNIQUE (id)); CREATE TABLE Events (id INT, name VARCHAR(255), community_program_id INT, year INT, UNIQUE (id), FOREIGN KEY (community_program_id) REFERENCES CommunityPrograms(id)); CREATE TABLE Attendance (id INT, event_id INT, attendees INT, UNIQUE (id), FOREIGN KEY (event_id) REFERENCES Events(id));
SELECT cp.name FROM CommunityPrograms cp JOIN Events e ON cp.id = e.community_program_id JOIN Attendance a ON e.id = a.event_id WHERE cp.country = 'Canada' GROUP BY cp.name HAVING COUNT(DISTINCT e.id) > 3 AND AVG(a.attendees) > 50 AND e.year BETWEEN 2019 AND 2022;