TOPIC

Exercício incoerente

Cleriston Nantes Petrikic asked 6 months ago

Alguém sabe explicar o exercício? pq se fizer realmente o que ele pede no enunciado "Listar nome e sálario líquido dos empregados que ganham mais que a media salarial de sua divisão. O resultado deve estar em ordem decrescente por sálario.", da como resposta errada em 50%.

Remember not post solutions. Your post may be reviewed by our moderators.

  • Fernando K replied 1 month ago

    Aqui está uma resposta que deveria funcionar mas não funciona (WA 50%), adicionada de três colunas para melhor verificação:

    with base as (
       select empregado.matr, sum(vencimento.valor) as valor
       from empregado
       join emp_venc ON emp_venc.matr = empregado.matr
       join vencimento ON vencimento.cod_venc = emp_venc.cod_venc
       group by empregado.matr
     ), desconto as (
       select empregado.matr, sum(desconto.valor) as valor
       from empregado
       join emp_desc ON emp_desc.matr = empregado.matr
       join desconto ON desconto.cod_desc = emp_desc.cod_desc
       group by empregado.matr
     ), salario as (
       select empregado.matr, coalesce(base.valor, 0) - coalesce(desconto.valor, 0) as valor
       from empregado
       left join base on base.matr = empregado.matr
       left join desconto on desconto.matr = empregado.matr
     ), medias as (
       select divisao.cod_divisao, round(avg(salario.valor), 2) as valor from salario
       join empregado on empregado.matr = salario.matr
       join divisao ON divisao.cod_divisao = empregado.lotacao_div
       group by divisao.cod_divisao
     )
     select
       empregado.nome,
       salario.valor,
       medias.valor as media_divisao,
       departamento.nome as nome_departamento,
       divisao.nome as nome_divisao
     from salario
     join empregado on empregado.matr = salario.matr
     join medias on medias.cod_divisao = empregado.lotacao_div
     join divisao on divisao.cod_divisao = empregado.lotacao_div
     join departamento on departamento.cod_dep = empregado.lotacao
     where salario.valor > medias.valor
     order by salario.valor desc

    As colunas adicionadas contêm o valor da média da divisão e o nome da divisão e do departamento que batem com o exercício 2989 (já que a base de dados é a mesma).

  • Maico Smaniotto replied 6 months ago

    Eu também travei em 50%. Além do mais, a saída de exemplo do exercício não está de acordo com o enunciado, onde pede para ordenar pelo salário decrescente. No exemplo do exercício parace que nem está ordenando.

  • Instagram/pedro_leocir replied 6 months ago

    Mande seu código. talvez eu possa ajudar. Assim sem uma base fica dificil ver o que está errado.

    MOD