Advertisement
amaimon02

2989 - Departamentos e Divisões

Apr 5th, 2024 (edited)
639
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.42 KB | None | 0 0
  1. SELECT
  2.   departamento.nome,
  3.   divisao.nome,
  4.   emp_calculado.media,
  5.   emp_calculado.salario
  6. FROM
  7.   (
  8.     SELECT
  9.       empregado.lotacao_div,
  10.       CAST(
  11.         AVG(
  12.           (
  13.             COALESCE(t_vencimento.Vencimento, 0) - COALESCE(t_desconto.Desconto, 0)
  14.           )
  15.         ) AS DECIMAL(8, 2)
  16.       ) AS media,
  17.       CAST(
  18.         MAX(
  19.           (
  20.             COALESCE(t_vencimento.Vencimento, 0) - COALESCE(t_desconto.Desconto, 0)
  21.           )
  22.         ) AS DECIMAL(8, 2)
  23.       ) AS salario
  24.     FROM
  25.       empregado
  26.       LEFT JOIN (
  27.         SELECT
  28.           emp_desc.matr,
  29.           SUM(desconto.valor) AS Desconto
  30.         FROM
  31.           desconto
  32.           INNER JOIN emp_desc ON desconto.cod_desc = emp_desc.cod_desc
  33.         GROUP BY
  34.           emp_desc.matr
  35.       ) AS t_desconto ON empregado.matr = t_desconto.matr
  36.       LEFT JOIN (
  37.         SELECT
  38.           emp_venc.matr,
  39.           SUM(vencimento.valor) AS Vencimento
  40.         FROM
  41.           vencimento
  42.           INNER JOIN emp_venc ON vencimento.cod_venc = emp_venc.cod_venc
  43.         GROUP BY
  44.           emp_venc.matr
  45.       ) AS t_vencimento ON empregado.matr = t_vencimento.matr
  46.     GROUP BY
  47.       lotacao_div
  48.   ) AS emp_calculado
  49.   INNER JOIN divisao ON divisao.cod_divisao = emp_calculado.lotacao_div
  50.   INNER JOIN departamento ON divisao.cod_dep = departamento.cod_dep
  51. ORDER BY
  52.   emp_calculado.media DESC;
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement