exercicio de SQL
Resp: Poderíamos resolver esta pesquisa com um único Select, porém devido ao fato de estarmos trabalhando em nosso exemplo com apenas duas tabelas não consiguimos criar um exemplo muito adequado para utilização deste recurso.
(Select * From Emp Where EmpNume > 10)
Union
(Select * From Emp Where DepNume > 10); Inserções, Alterações e Exclusões
02) Apresente o nome de todos os empregados em letras minúsculas.
Resp: SELECT LOWER( EMPNOME ) FROM EMP;
03) Apresente o nome de todos os empregados (somente as 10 primeiras letras).
Resp: SELECT SUBSTRING (1,10,EMPNOME) FROM EMP;
04) Apresente o nome de todos os empregados admitidos em 01/01/80.
Resp: SELECT * FROM EMP WHERE EMPADMI = ^Q"DD-AAA-YYYY"("01-JAN-1980"); ou SELECT * FROM EMP WHERE EMPADMI = ^Q("01-JAN-1980");
05) Retome o problema anterior, porém apresente resposta apenas para departamentos com mais de 10 empregados.
Resp: SELECT DEPNUME, AVG(EMPSALA) FROM EMP GROUP BY DEPNUME HAVING COUNT(*) > 3;
Obs.: A claúsula "group by" deve ser colocada antes da "having", pois os grupos são formados e as funções de grupos são calculadas antes de se resolver a cláusula "having".
A cláusula "where" não pode ser utilizada para restringir grupos que deverão ser exibidos.
Exemplificando ERRO típico - Restringindo Média Maior que 1000: SELECT DEPNUME, AVG(EMPSALA) FROM EMP WHERE AVG(SALARIO) > 1000 GROUP BY DEPNUME; ( Esta seleção está ERRADA! )
SELECT DEPNUME, AVG(EMPSALA) FROM EMP GROUP BY DEPNUME HAVING AVG(EMPSALA) > 1000; ( Seleção Adequada )