Você está na página 1de 3

Ejemplos de SQL - nivel avanzado

Para poder trabajar con estos ejemplos debers tener creadas las tablas de demostracin. Para obtener el fichero que las crea automticamente haz click aqu.

1.- Nombre del empleado mas largo. El nombre saldr con la primera letra en maysculas y el resto en minsculas 1 2 3 4 select initcap(ename) from emp where length (rtrim(ename,' ')) in (select max(length(rtrim(ename,' '))) from emp);

INITCAP(EN ---------Martin Turner Miller 2.- Nombre, salario mensual, salario diario y precio de su hora de aquellos empleados que no tienen comisiones (suponer 22 das al mes y 8 horas diarias) 1 select ename,sal,sal/22,(sal/22)/8 2 from emp 3 where length(comm) is not null ENAME SAL SAL/22 (SAL/22)/8 ---------- --------- --------- ---------MARTIN 1250 56,818182 7,1022727 ALLEN 1600 72,727273 9,0909091 TURNER 1500 68,181818 8,5227273 WARD 1250 56,818182 7,1022727 3 .- Nombres, categorias y aos cumplidos de antigedad de los empleados de la empresa en orden descendente de antigedad y ascendente de nmero de departamento. Los nombres de las categoras saldrn en minsculas 1 2 3 4 select ename, lower(job), (to_char(sysdate,'yyyy')-(to_char(hiredate,'yyyy'))) from dual, emp order by to_char(sysdate,'yyyy')to_char(hiredate,'yyyy')desc,deptno

ENAME LOWER(JOB (TO_CHAR(SYSDATE,'YYYY')-(TO_CHAR(HIREDATE,'YYYY'))) ---------- --------- ---------------------------------------------------SMITH clerk 19 KING president 18 CLARK manager 18 JONES manager 18 FORD analyst 18 BLAKE manager 18 MARTIN salesman 18 ALLEN salesman 18 TURNER salesman 18 JAMES clerk 18 WARD salesman 18 MILLER clerk 17

SCOTT analyst 17 ADAMS clerk 16 4 .- Antigedad media de los empleados de cada departamento. SQL> select avg(to_char(sysdate,'yyyy')-(to_char(hiredate,'yyyy'))) 2 from emp,dual 3 group by deptno; AVG(TO_CHAR(SYSDATE,'YYYY')-(TO_CHAR(HIREDATE,'YYYY'))) ------------------------------------------------------17,666667 17,6 18 5 .- Seleccione los nombres y salarios de los empleados que ganan mas que sus jefes 1 2 3 4 select a.ename,a.sal from emp a,emp b where a.mgr=b.empno and a.sal>b.sal

ENAME SAL ---------- --------FORD 3000 SCOTT 3000 6 .- Encuentra todos los empleados que ganan mas que el salario medio de los empleados de su propio departamento y listarlos ordenados por departamento. 1 2 3 4 5 6 select avg (sal), job ,deptno from emp group by job, deptno having avg(sal)>(select avg(sal) from emp) order by deptno;

AVG(SAL) JOB DEPTNO --------- --------- --------2450 MANAGER 10 5000 PRESIDENT 10 3000 ANALYST 20 2975 MANAGER 20 2850 MANAGER 30 7 .- Cuantos meses hace que ingres el presidente de la compaa? 1 select months_between(sysdate,hiredate) 2 from dual,emp 3 where job='PRESIDENT'; MONTHS_BETWEEN(SYSDATE,HIREDATE) -------------------------------216,50908

8 .- Muestre los empleados cuyo aniversario es el mes de diciembre 1 select ename 2 from emp 3 where to_char(hiredate,'MM')=12; ENAME ---------JAMES FORD SMITH SCOTT 9 .- Obtener los registros de los analistas con las fechas de ingreso formateadas con 3 de Diciembre de 1984 1 select to_char(hiredate,'DD "de" Month "de" YYYY') 2 from emp 3 where job='ANALYST' TO_CHAR(HIREDATE,'DD"DE" -----------------------03 de Diciembre de 1981 09 de Diciembre de 1982 10 .-Mostar los nombre y las fechas de ingreso de los empleados del depto 20 con la fecha formateada con esta mascara: 10/31/86. SQL> select ename,to_char(hiredate,'MM/DD/YY') 2 from emp 3 where deptno=20; ENAME TO_CHAR( ---------- -------JONES 04/02/81 FORD 12/03/81 SMITH 12/17/80 SCOTT 12/09/82 ADAMS 01/12/83

Você também pode gostar