1
resposta

Minha versão :)

create or replace function cria_instrutor (nome_instrutor varchar, salario_instrutor decimal) returns void as 
$$
    declare
        media decimal;
        percentual decimal;
    begin
        select avg(instrutor.salario) into media from instrutor;

        if media is not null then
            select ((count(*) filter (where salario < salario_instrutor))::decimal / count(*)) * 100 from instrutor into percentual;

            insert into instrutor(nome, salario) values (nome_instrutor, salario_instrutor);

            insert into log_salarios (informacao) values (nome_instrutor || ' recebe mais do que ' || percentual || '% dos intrutores');
            if salario_instrutor > media then
                insert into log_salarios (informacao) values (nome_instrutor || ' recebe acima da média');
            end if;
        else
            insert into instrutor(nome, salario) values (nome_instrutor, salario_instrutor);
        end if;
    end;
$$ language plpgsql;
1 resposta

Oi, Higor! Tudo certo por aí?

Peço desculpas pela demora em retornar.

Parabéns pelo desenvolvimento da função, ficou excelente a forma com que você a organizou.

Se surgir alguma dúvida durante os seus estudos, fico à disposição para ajudar.

Abraços!