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 3 principais locais com o maior custo médio de projeto na tabela 'public_works', particionados por ano.
 ###Tabelas: 
CREATE TABLE public_works (id INT, name VARCHAR(50), location VARCHAR(50), year INT, cost FLOAT);
SELECT location, AVG(cost) as avg_cost, ROW_NUMBER() OVER (PARTITION BY year ORDER BY AVG(cost) DESC) as rn  FROM public_works GROUP BY location, year ORDER BY year, avg_cost DESC LIMIT 3;