|
Ejemplos de SQL - nivel básico |
Para poder trabajar con estos ejemplos deberás tener creadas las tablas de demostración. Para obtener el fichero que las crea automáticamente haz click aquí.
1 .- Encuentre el nombre, empleo ,número de departamento y salario de cada
empleado que gane igual que Jones o gane igual o mas que ford
1 select ename,job,deptno,sal
2 from emp
3 where sal =(select sal
4 from emp
5 where ename = 'JONES' )
6 or sal >= (select sal
7 from emp
8 where
ename = 'FORD');
ENAME JOB DEPTNO SAL
---------- --------- --------- ---------
KING PRESIDENT 10 5000
JONES MANAGER 20 2975
FORD ANALYST 20 3000
SCOTT ANALYST 20 3000
2 .- Seleccionar el nombre, empleo y salario de las personas de l
departamento 20 que tengan el mismo empleo que las persona del departamento 30, ordenados por
salarios.
1 select ename, job , sal
2 from emp
3 where deptno = '20'
4 and job in (select job
5 from emp
6
where deptno='30');
ENAME JOB SAL
---------- --------- ---------
SMITH CLERK 800
ADAMS CLERK 1100
JONES MANAGER 2975
3. .- ¿cuál es el empleado mejor pagado por
cada departamento?
1 select max (sal), deptno
2 from emp
3 group by deptno;
MAX(SAL) DEPTNO
--------- ---------
5000 10
3000 20
2850 30
4 .- Encuentre todos los departamentos que tengan empleados y saque
toda la información disponible
1 select *
2 from dept, emp
3 where
emp.deptno=dept.deptno;
DEPTNO DNAME
LOC
EMPNO ENAME JOB MGR HIREDATE SAL
COMM DEPTNO
10 ACCOUNTING NEW YORK 7839 KING PRESIDENT 17/11/81 5000 10
30
SALES
CHICAGO
7698 BLAKE MANAGER 7839 01/05/81 2850 30
10
ACCOUNTING NEW YORK 7782 CLARK MANAGER
7839 09/06/81 2450
10
20
RESEARCH
DALLAS 7566 JONES MANAGER 7839 02/04/81 2975 20
30
SALES
CHICAGO 7654 MARTIN SALESMAN 7698 28/09/81 1250 1400 30
30 SALES CHICAGO 7499 ALLEN SALESMAN 7698 20/02/81 1600 300 30
30 SALES CHICAGO 7844 TURNER SALESMAN 7698 08/09/81 1500 0 30
30
SALES
CHICAGO 7900 JAMES CLERK 7698 03/12/81 950 30
30 SALES CHICAGO 7521 WARD SALESMAN 7698 22/02/81 1250 500 30
20 RESEARCH DALLAS
7902 FORD ANALYST 7566 03/12/81 3000
20
20 RESEARCH DALLAS
7369 SMITH CLERK 7902 17/12/80 800 20
20 RESEARCH DALLAS
7788 SCOTT ANALYST 7566 09/12/82 3000
20
20 RESEARCH DALLAS
7876 ADAMS CLERK 7788 12/01/83 1100
20
10 ACCOUNTING NEW YORK 7934 MILLER CLERK 7782 23/01/82 1300
10
5 .- ¿qué empleado fue el ultimo en entrar en cada departamento?
1 select min(hiredate),deptno
2 from emp
3 group by deptno;
MIN(HIRE DEPTNO
-------- ---------
09/06/81 10
17/12/80 20
20/02/81 30
6 .- ¿Cuántos empleados trabajan en NEW YORK?
1 select count (ename)
2 from emp,dept
3 where emp.deptno=dept.deptno
4 and loc='NEW YORK'
COUNT(ENAME)
------------
3
7.- ¿qué empleados trabajan NEW YORK?
1 select ename
2 from emp,dept
3 where emp.deptno=dept.deptno
4 and loc='NEW YORK'
ENAME
----------
KING
CLARK
MILLER
8 .- Nombres, puestos y salarios de los
empleados de la empresa cuyo salario sea superior a 2000, ordenados por salario
descendente
1 select ename,job,sal
2 from emp
3 where sal>2000
4 order by sal desc;
ENAME JOB SAL
---------- --------- ---------
KING PRESIDENT 5000
FORD ANALYST 3000
SCOTT ANALYST 3000
JONES MANAGER 2975
BLAKE MANAGER 2850
CLARK MANAGER 2450
9 .- Nombres, puestos, salarios y códigos de
departamento de los empleados ordenados por código de departamento ,y cuando
pertenezcan al mismo departamento, por salario de mayor a menor
1 select ename, job,sal,deptno
2 from emp
3 order by deptno,sal desc
ENAME JOB SAL DEPTNO
---------- --------- --------- --------- -------------
KING PRESIDENT 5000 10
CLARK MANAGER 2450 10
MILLER CLERK 1300 10
FORD ANALYST 3000 20
SCOTT ANALYST 3000 20
JONES MANAGER 2975 20
ADAMS CLERK 1100 20
SMITH CLERK 800 20
BLAKE MANAGER 2850 30
ALLEN SALESMAN 1600 30
TURNER SALESMAN 1500 30
MARTIN SALESMAN 1250 30
WARD SALESMAN 1250 30
JAMES CLERK 950 30
10 .- Nombre, puesto e importe de la subida
salarial que correspondería a cada empleado si se decidiera incrementar todos
los salarios en un 10%
SQL> select ename,job,sal *0.10
2 from emp;
ENAME JOB SAL*0.10
---------- --------- ---------
KING PRESIDENT 500
BLAKE MANAGER 285
CLARK MANAGER 245
JONES MANAGER 297,5
MARTIN SALESMAN 125
ALLEN SALESMAN 160
TURNER SALESMAN 150
JAMES CLERK 95
WARD SALESMAN 125
FORD ANALYST 300
SMITH CLERK 80
SCOTT ANALYST 300
ADAMS CLERK 110
MILLER CLERK 130
11 .- Igual que el punto anterior, pero ordenado por puesto y, dentro de él por
incremento salarial de mayor a menor
1 select ename,job,sal *0.10
2 from emp
3 order
by job ,sal *0.10 desc
ENAME JOB SAL*0.10
---------- --------- ---------
FORD ANALYST 300
SCOTT ANALYST 300
MILLER CLERK 130
ADAMS CLERK 110
JAMES CLERK 95
SMITH CLERK 80
JONES MANAGER 297,5
BLAKE MANAGER 285
CLARK MANAGER 245
KING PRESIDENT 500
ALLEN SALESMAN 160
TURNER SALESMAN 150
MARTIN SALESMAN 125
WARD SALESMAN 125
12 .- Salario medio, mínimo y máximo de los
empleados de la compañía
1 select avg(sal), min(sal),max(sal)
2 from emp;
AVG(SAL) MIN(SAL) MAX(SAL)
--------- --------- ---------
2073,2143 800 5000
13.- Salario total a pagar a los empleados
cuyo puesto es analista y contar el numero de empleados con ese puesto
1 select count(job),sum(sal)
2 from emp
3 where job='ANALYST'
COUNT(JOB) SUM(SAL)
---------- ---------
2 6000
14 .- Igual que el punto 12, pero agrupando
los datos por departamento
1 select avg(sal),min(sal),max(sal)
2 from emp
3 group by deptno;
AVG(SAL) MIN(SAL) MAX(SAL)
--------- --------- ---------
2916,6667 1300 5000
2175 800 3000
1566,6667 950 2850
15 .- Número de categorías que existen en la empresa
1 select count (job)
2 from emp
3 group by job
COUNT(JOB)
----------
2
4
3
1
4
A PROGRAMAR © 2002. All Rights Reserved.