Todas as informações necessárias estão no hyperlink:
https://www.urionlinejudge.com.br/choose/en/issues/view/2991
Meu SQL no momento é:
SELECT DEPARTAMENTO AS “Nome Departamento”,
COUNT(EMPREGADO) AS “Numero de Empregados”,
ROUND(SUM(R.LIQUIDO) / COUNT(EMPREGADO), 2) AS “Media Salarial”,
MAX(R.LIQUIDO) AS “Maior Salario”,
MIN(R.LIQUIDO) AS “Menor Salario”
FROM ( SELECT DEP.NOME AS DEPARTAMENTO,
EMP.NOME AS EMPREGADO,
ROUND(( SELECT COALESCE(SUM(V.VALOR), 0)
FROM DEPARTAMENTO DEPAR
JOIN DIVISAO DIVIS
ON DEPAR.COD_DEP = DIVIS.COD_DEP
JOIN EMPREGADO EMPRE
ON DIVIS.COD_DIVISAO = EMPRE.LOTACAO_DIV
JOIN EMP_VENC EV
ON EMPRE.MATR = EV.MATR
JOIN VENCIMENTO V
ON EV.COD_VENC = V.COD_VENC
WHERE EMPRE.NOME = EMP.NOME
), 2) – ( SELECT COALESCE(SUM(D.VALOR), 0)
FROM DEPARTAMENTO DEPA
JOIN DIVISAO DIVI
ON DEPA.COD_DEP = DIVI.COD_DEP
JOIN EMPREGADO EMPR
ON DIVI.COD_DIVISAO = EMPR.LOTACAO_DIV
JOIN EMP_DESC ED
ON EMPR.MATR = ED.MATR
JOIN DESCONTO D
ON ED.COD_DESC = D.COD_DESC
WHERE EMPR.NOME = EMP.NOME
) AS LIQUIDO
FROM DEPARTAMENTO DEP
JOIN DIVISAO DIV
ON DEP.COD_DEP = DIV.COD_DEP
JOIN EMPREGADO EMP
ON DIV.COD_DIVISAO = EMP.LOTACAO_DIV
GROUP BY DEPARTAMENTO, EMPREGADO) AS R
GROUP BY R.DEPARTAMENTO
ORDER BY “Media Salarial” DESC;