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 as 3 principais empresas de mineração em termos de avaliações de impacto ambiental na África do Sul, de 2018 a 2020?
 ###Tabelas: 
CREATE TABLE CompanyEnvironmentalImpact (year INT, company TEXT, country TEXT, impact_assessment_score INT); INSERT INTO CompanyEnvironmentalImpact (year, company, country, impact_assessment_score) VALUES (2018, 'ABC Mining', 'South Africa', 85), (2019, 'XYZ Mining', 'South Africa', 90), (2020, 'LMN Mining', 'South Africa', 95), (2018, 'DEF Mining', 'South Africa', 80), (2019, 'GHI Mining', 'South Africa', 85), (2020, 'JKL Mining', 'South Africa', 90);
SELECT context.company, SUM(context.impact_assessment_score) as total_impact_score FROM CompanyEnvironmentalImpact context WHERE context.country = 'South Africa' AND context.year BETWEEN 2018 AND 2020 GROUP BY context.company ORDER BY total_impact_score DESC LIMIT 3;