SUBCONSULTA
1. Exiba o nome, o salário e o código e nome do depto dos funcionários que tenham o cargo igual ao do funcionário com código 2 e salário maior que o do funcionário com código 4. Formate o salário.
SELECT
NOME_FUNC, TO_CHAR(SALARIO_FUNC, 'L999,999.99'), NOME_DEPTO
FROM
FUNCIONARIO F JOIN DEPARTAMENTO D ON F.COD_DEPTO = D.COD_DEPTO
WHERE
F.COD_CARGO = (SELECT COD_CARGO FROM FUNCIONARIO WHERE COD_FUNC = 2)
AND
SALARIO_FUNC > (SELECT SALARIO_FUNC FROM FUNCIONARIO WHERE COD_FUNC = 3);
2. Exiba por Cód.Depto e Nome do Departamento a quantidade de funcionários que tem o salário menor que o maior salário da tabela
SELECT
D.COD_DEPTO, NOME_DEPTO, COUNT(COD_FUNC) AS "QUANTIDADE DE FUNCIONÁRIOS"
FROM
DEPARTAMENTO D JOIN FUNCIONARIO F ON D.COD_DEPTO = F.COD_DEPTO
WHERE
SALARIO_FUNC (SELECT MIN(SALARIO_FUNC) FROM FUNCIONARIO WHERE COD_DEPTO = 4)
GROUP BY D.COD_DEPTO, NOME_DEPTO;
4. Exiba somente o código e a descrição do Cargo com o maior salário médio. Formate o salário.
SELECT C.COD_CARGO, DESCR_CARGO, TO_CHAR(AVG(SALARIO_FUNC), 'L999,999.99') AS "SALARIO MÉDIO"
FROM
CARGO C JOIN FUNCIONARIO F ON C.COD_CARGO = F.COD_CARGO
HAVING
AVG(SALARIO_FUNC) >=ALL (SELECT AVG(SALARIO_FUNC) FROM FUNCIONARIO GROUP BY COD_CARGO)
GROUP BY C.COD_CARGO, C.DESCR_CARGO
ORDER BY AVG(SALARIO_FUNC) DESC;
5. Buscar o nome e o salário de todos os funcionários exceto o funcionário com maior salário.
SELECT NOME_FUNC, SALARIO_FUNC
FROM
FUNCIONARIO
WHERE
SALARIO_FUNC < (SELECT MAX(SALARIO_FUNC) FROM FUNCIONARIO);
6. Localize o código e o nome dos funcionários e o salário que recebam o mesmo salário que o salário mínimo de cada departamento
SELECT
COD_FUNC, NOME_FUNC, SALARIO_FUNC
FROM
FUNCIONARIO
WHERE
SALARIO_FUNC IN (SELECT MIN(SALARIO_FUNC) FROM FUNCIONARIO GROUP BY COD_CARGO)
ORDER BY COD_FUNC;
7. Exiba o nome e o endereço