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: Calcular a porcentagem de produtos provenientes de fontes éticas vendidos para cada product_id nos últimos 30 dias.
 ###Tabelas: 
CREATE TABLE sales_by_product (sale_date DATE, product_id INT, quantity INT, ethical_source BOOLEAN); INSERT INTO sales_by_product VALUES ('2022-06-01', 1, 50, true), ('2022-06-01', 2, 30, false), ('2022-06-02', 1, 75, true), ('2022-06-02', 2, 40, false), ('2022-06-03', 1, 80, true), ('2022-06-03', 2, 35, false), ('2022-06-04', 1, 90, true), ('2022-06-04', 2, 45, false);
SELECT product_id, SUM(quantity * ethical_source) / SUM(quantity) OVER (PARTITION BY product_id) AS percentage_ethical FROM sales_by_product WHERE sale_date >= DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY) GROUP BY product_id;