Consulta SQL
a) Sem usar subconsulta, ou seja, usando somente LEFT OUTER JOIN.
b) Com subconsulta, usando o operador NOT IN na clausula WHERE.
SELECT F.NOM_FUNC FROM FUNCIONARIO F LEFT OUTER JOIN PROJETO P ON(F.COD_FUNC = P.COD_FUNC_COORDENADOR) WHERE P.COD_FUNC_COORDENADOR IS NULL
SELECT F.NOM_FUNC FROM FUNCIONARIO F WHERE F.COD_FUNC NOT IN(SELECT COD_FUNC_COORDENADOR FROM PROJETO WHERE COD_FUNC_COORDENADOR IS NOT NULL);
2) Recupere o nome do funcionário não demitido com o menor salário na empresa.
SELECT NOM_FUNC FROM FUNCIONARIO WHERE DTA_DEMISSAO IS NULL AND VAL_SALARIO =(SELECT MIN(VAL_SALARIO) FROM FUNCIONARIO);
3) Recupere o nome dos gerentes de departamento que ganham acima da media salarial dos funcionários que são vendedores.
SELECT F.NOM_FUNC FROM FUNCIONARIO F INNER JOIN DEPARTAMENTO D ON(F.COD_FUNC = D.COD_FUNC_GERENTE) WHERE F.VAL_SALARIO >(SELECT AVG(F.VAL_SALARIO) FROM FUNCIONARIO F INNER JOIN VENDEDOR V ON(F.COD_FUNC = V.COD_FUNC));
4) Recupere os nome dos dois produtos mais vendidos até hoje na empresa.
SELECT TOP 2 PR.NOM_PRODUTO FROM PRODUTO PR INNER JOIN PEDIDO_ITENS IT ON(PR.COD_PRODUTO = IT.COD_PRODUTO) ORDER BY IT.NUM_QUANTIDADE DESC
5) Recupere o nome do vendedor que fez o pedido de maior valor até o momento.
SELECT F.NOM_FUNC FROM FUNCIONARIO F INNER JOIN VENDEDOR V ON(F.COD_FUNC = COD_FUNC) INNER JOIN PEDIDO P ON(V.COD_FUNC = P.COD_FUNC) WHERE P.VAL_TOTAL_PEDIDO = (SELECT MAX(VAL_TOTAL_PEDIDO) FROM PEDIDO WHERE DTA_PEDIDO (SELECT AVG(VAL_SALARIO) FROM FUNCIONARIO WHERE DTA_DEMISSAO IS NOT NULL)
7) Use o operador IN para formular uma subconsulta que recupere o nome e data de nascimento de cada um dos empregados que são coordenadores de projetos e tenham que tenham idade acima de 30 anos.
SELECT F.NOM_FUNC,F.DTA_NASCIMENTO FROM FUNCIONARIO F INNER JOIN PROJETO PR ON(F.COD_FUNC =