Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@ljmf00
Created October 10, 2019 09:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ljmf00/3b662b7a4b159ddc797751121b175e2a to your computer and use it in GitHub Desktop.
Save ljmf00/3b662b7a4b159ddc797751121b175e2a to your computer and use it in GitHub Desktop.
-- ficha 1
-- ex3
SELECT DISTINCT funcao FROM empregado
ORDER BY funcao ASC;
-- ex4
SELECT nomeemp, salario, NVL(TO_CHAR(comissao), 'Nao existe') AS "comissao" FROM empregado
ORDER BY salario DESC, nomeemp ASC;
-- ex 8
SELECT 'O ' || UPPER(nomeemp) || ' ganha ' || salario || ' mas queria ganhar ' || salario * 3 AS "salarios" FROM empregado;
-- ex 9
SELECT nomeemp, salario, comissao FROM empregado
WHERE comissao IS NOT NULL AND comissao > salario
ORDER BY nomeemp ASC;
-- ex 15
SELECT nomeemp FROM empregado
WHERE UPPER(nomeemp) LIKE '%O%'
ORDER BY nomeemp ASC;
-- ex 17
SELECT nomeemp FROM empregado
WHERE NOT UPPER(nomeemp) LIKE '%O%';
-- ex 20
SELECT nomeemp, salario FROM empregado
WHERE comissao IS NULL AND salario > 3000;
-- ex 22
SELECT
nomeemp,
TO_CHAR(dtacontratacao, 'DD-MM-YYYY') AS "Data de Contratacao",
ADD_MONTHS(dtacontratacao, 12) AS "Data revisao"
FROM empregado
ORDER BY nomeemp ASC;
-- ex 24
SELECT
nomeemp,
(salario * 14) + NVL(comissao, 0) AS "REMUNERACAO ANUAL"
FROM empregado
ORDER BY nomeemp ASC;
-- ex 25
SELECT
nomeemp,
CASE
WHEN salario < 1500 THEN 'Menor que 1500'
WHEN salario > 1500 THEN TO_CHAR(salario)
ELSE 'Valor Exato'
END AS "SAL"
FROM empregado
ORDER BY nomeemp;
-- ficha 2
-- ex1
SELECT e.nomeemp, e.numdep, d.nomedep, d.localizacao
FROM empregado e
JOIN departamento d ON e.numdep = d.numdep;
-- ex2
SELECT e.nomeemp AS "NOME_EMP", e.salario, d.nomedep, d.localizacao
FROM empregado e
JOIN departamento d ON e.numdep = d.numdep
WHERE e.salario > 1500
ORDER BY e.nomeemp ASC;
-- ex3
SELECT
e.nomeemp AS "NOME",
h.funcao,
TO_CHAR(h.dtainicio, 'DD-Mon-YYYY') AS "DATAINICIO",
TO_CHAR(h.dtafim, 'DD-MON-YYYY') AS "DATAFIM",
d.nomedep AS "DEPARTAMENTO"
FROM empregado e
JOIN historico_funcao h ON e.numemp = h.numemp
JOIN departamento d ON h.numdep = d.numdep
ORDER BY
e.nomeemp ASC,
h.dtafim DESC;
-- ex4
SELECT
e.nomeemp AS "NOME_EMP",
e.funcao,
e.salario,
es.escala
FROM empregado e
JOIN escala_salarial es ON es.minsal <= e.salario AND es.maxsal >= e.salario
ORDER BY e.salario DESC;
-- ex6
SELECT
e.nomeemp,
e.funcao,
e.salario,
es.escala,
d.nomedep
FROM empregado e
JOIN escala_salarial es ON es.minsal <= e.salario AND es.maxsal >= e.salario
JOIN departamento d ON d.numdep = e.numdep
WHERE e.funcao <> 'Analista'
ORDER BY e.salario DESC, e.nomeemp DESC;
-- ex 8
SELECT
e.numemp AS "NUMERO EMPREGADO",
e.nomeemp AS "NOME EMPREGADO",
em.numemp AS "NUMERO DO SEU CHEFE",
em.nomeemp AS "NOME CHEFE"
FROM empregado e
JOIN empregado em ON em.numemp = e.chefe
ORDER BY em.numemp;
-- ex 11
SELECT e.nomeemp, d.numdep, d.nomedep, d.localizacao
FROM empregado e
RIGHT JOIN departamento d ON e.numdep = d.numdep;
-- ex 14
SELECT d.numdep
FROM empregado e
RIGHT JOIN departamento d ON d.numdep = e.numdep
WHERE e.numdep IS NULL;
-- ficha 4
--ex 1
SELECT COUNT(chefe) AS "Numero de empregados com chefe"
FROM empregado
WHERE chefe IS NOT NULL;
--ex 2
SELECT COUNT(DISTINCT chefe) AS "Numero Chefes na empresa"
FROM empregado
WHERE chefe IS NOT NULL;
--ex 3
SELECT COUNT(comissao) AS "Numero comissoes (>0)"
FROM empregado
WHERE comissao IS NOT NULL AND comissao > 0;
--ex 4
SELECT COUNT(DISTINCT numdep) AS "Numero de Dept. com Emp."
FROM empregado
WHERE numdep IS NOT NULL;
--ex 6
SELECT COUNT(funcao) AS "Numero de diretores"
FROM empregado
WHERE funcao IS NOT NULL AND funcao = 'Director';
--ex 9
SELECT numdep AS "Numero do departamento", COUNT(numdep) AS "Numero de empregados"
FROM empregado
GROUP BY numdep
ORDER BY COUNT(numdep) DESC;
-- ex 10
SELECT funcao, COUNT(funcao) AS "Quant. Empregados"
FROM empregado
GROUP BY funcao
ORDER BY "Quant. Empregados" ASC;
-- ex 13
SELECT numdep AS "Numero do departamento", COUNT(numdep) AS "Numero de empregados"
FROM empregado
GROUP BY numdep
HAVING COUNT(numdep) > 3
ORDER BY COUNT(numdep) DESC;
-- ex 16
SELECT d.localizacao, COUNT(d.localizacao) AS "FUNCIONARIOS", SUM(e.salario) AS "VOLUME_SALARIO_MENSAL"
FROM empregado e
JOIN departamento d ON e.numdep = d.numdep
GROUP BY d.localizacao;
-- ex 18
SELECT MAX(e.salario) AS "MAX", MIN(e.salario) AS "MIN"
FROM empregado e
JOIN escala_salarial es ON es.minsal <= e.salario AND es.maxsal >= e.salario
JOIN departamento d ON e.numdep = d.numdep
WHERE es.escala = 4 AND (d.localizacao = 'Lisboa' OR d.localizacao = 'Santarém');
-- ex 19
SELECT funcao AS "Funcao", ROUND(AVG(salario), 0) AS "Media mensal", SUM((salario * 14) + NVL(comissao, 0)) AS "Volume Salarial Anual"
FROM empregado
GROUP BY funcao
ORDER BY funcao;
-- ex 20
SELECT SUM((salario * 14) + NVL(comissao, 0)) AS "Remuneracao Salarial Anual"
FROM empregado
WHERE funcao = 'Vendedor' AND comissao IS NOT NULL AND comissao > 0;
-- ex 23
SELECT numdep, funcao, MAX(salario), MIN(salario), AVG(salario)
FROM empregado
GROUP BY funcao, numdep
HAVING numdep = 20 OR numdep = 30
ORDER BY numdep DESC, funcao ASC;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment