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 todos os programas com seus IDs e o número total de voluntários, ordenados pelo número total de voluntários em ordem decrescente.
 ###Tabelas: 
CREATE TABLE programs (id INT, name TEXT); CREATE TABLE volunteers (id INT, program_id INT, name TEXT); INSERT INTO programs (id, name) VALUES (1, 'Feeding the Hungry'), (2, 'Tutoring Kids'), (3, 'Cleaning the Environment'); INSERT INTO volunteers (id, program_id, name) VALUES (1, 1, 'John Doe'), (2, 1, 'Jane Smith'), (3, 2, 'Alice Johnson'), (4, 3, 'Bob Brown'), (5, 3, 'Charlie Green');
SELECT ROW_NUMBER() OVER (ORDER BY total_volunteers DESC) AS rank, programs.id, programs.name, COUNT(volunteers.id) AS total_volunteers FROM programs LEFT JOIN volunteers ON programs.id = volunteers.program_id GROUP BY programs.id, programs.name ORDER BY total_volunteers DESC;