Consultas SQL com JOIN e Subconsultas no Oracle
Classificado em Inglês
Escrito em em
português com um tamanho de 3,76 KB
Exercícios de SQL: Consultas com Tabelas EMP e DEPT
Questão 1 – Nome, salário e departamento dos empregados em DALLAS
Mostrar o nome, o salário e o departamento dos empregados localizados em DALLAS.
SELECT E.ENAME, E.SAL, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO AND D.LOC = 'DALLAS';OU
SELECT E.ENAME, E.SAL, D.DNAME FROM EMP E JOIN DEPT D ON E.DEPTNO = D.DEPTNO WHERE D.LOC = 'DALLAS';Questão 2 – Inserir um novo departamento na tabela DEPT
Adicione um novo departamento na tabela DEPT.
INSERT INTO DEPT (DEPTNO, DNAME, LOC) VALUES (50, 'SALES', 'MIAMI');Observação: os dados para inserção eram de criação livre; o único impedimento era que o número do departamento não fosse de um já existente.
Questão 3 – Descrição do departamento e quantidade de funcionários
Listar a descrição do departamento e a quantidade de funcionários.
SELECT D.DNAME, COUNT(*) FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO GROUP BY D.DNAME;OU
SELECT D.DNAME, COUNT(*) FROM EMP E JOIN DEPT D ON E.DEPTNO = D.DEPTNO GROUP BY D.DNAME;Questão 4 – Nome, número e departamento de todos os funcionários
Crie uma consulta para exibir o nome, o número e o nome do departamento de todos os funcionários.
SELECT E.ENAME, E.EMPNO, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO;OU
SELECT E.ENAME, E.EMPNO, D.DNAME FROM EMP E JOIN DEPT D ON E.DEPTNO = D.DEPTNO;Questão 5 – Funcionários que recebem comissão
Crie uma consulta para exibir o nome do funcionário, o nome do departamento e a localização do departamento de todos os funcionários que recebem comissão.
SELECT E.ENAME, D.DNAME, D.LOC FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO AND NVL(E.COMM, 0) > 0;OU
SELECT E.ENAME, D.DNAME, D.LOC FROM EMP E JOIN DEPT D ON E.DEPTNO = D.DEPTNO WHERE NVL(E.COMM, 0) > 0;Questão 6 – Funcionários com a letra “A” no nome
Exiba o nome do funcionário e o nome do departamento para todos os funcionários que possuem a letra “A” em seus nomes.
SELECT E.ENAME, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO AND UPPER(E.ENAME) LIKE '%A%';OU
SELECT E.ENAME, D.DNAME FROM EMP E JOIN DEPT D ON E.DEPTNO = D.DEPTNO WHERE UPPER(E.ENAME) LIKE '%A%';Questão 7 – Nome e data de admissão ordenados por nome
Crie uma consulta para exibir o nome e a data de admissão de todos os funcionários, ordenada pelo nome do funcionário.
SELECT E.ENAME, E.HIREDATE FROM EMP E ORDER BY E.ENAME;Questão 8 – Funcionários admitidos após “Blake”
Crie uma consulta para exibir o nome e a data de admissão de qualquer funcionário admitido após o funcionário “Blake”, ordenada pelo nome do funcionário.
Em um único comando:
SELECT E.ENAME, E.HIREDATE FROM EMP E WHERE E.HIREDATE > (SELECT HIREDATE FROM EMP WHERE TRIM(UPPER(ENAME)) = 'BLAKE') ORDER BY E.ENAME;Ou em dois passos:
Primeiro, descobrir a data de admissão de Blake:
SELECT HIREDATE FROM EMP WHERE TRIM(UPPER(ENAME)) = 'BLAKE';Depois, executar a consulta com a data obtida:
SELECT E.ENAME, E.HIREDATE FROM EMP E WHERE E.HIREDATE > TO_DATE('01/05/1981', 'DD/MM/YYYY') ORDER BY E.ENAME;