lunes, 14 de noviembre de 2011

Bases de Datos

Script para crear esta base de datos (Link)
1. Obtener todos los datos de todos los empleados.

SELECT * FROM emp;
 empno | ename  |    job    | mgr  |  hiredate  |   sal   |  comm   | deptno
-------+--------+-----------+------+------------+---------+---------+--------
  7698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 | 2850.00 |         |     30
  7499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 | 1600.00 |  300.00 |     30
  7521 | WARD   | SALESMAN  | 7698 | 1981-02-22 | 1250.00 |  500.00 |     30
  7654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 | 1250.00 | 1400.00 |     30
  7844 | TURNER | SALESMAN  | 7698 | 1981-09-08 | 1500.00 |    0.00 |     30
  7900 | JAMES  | CLERK     | 7698 | 1981-12-03 |  950.00 |         |     30
  7839 | KING   | PRESIDENT |      | 1981-11-17 | 5000.00 |         |     10
  7566 | JONES  | MANAGER   | 7839 | 1981-04-02 | 2975.00 |         |     20
  7902 | FORD   | ANALYST   | 7566 | 1981-12-03 | 3000.00 |         |     20
  7369 | SMITH  | CLERK     | 7902 | 1980-12-17 |  800.00 |         |     20
  7782 | CLARK  | MANAGER   | 7839 | 1981-06-09 | 2450.00 |         |     10
  7788 | SCOTT  | ANALYST   | 7566 | 1982-12-09 | 3000.00 |         |     20
  7876 | ADAMS  | CLERK     | 7788 | 1983-01-12 | 1100.00 |         |     20
  7934 | MILLER | CLERK     | 7782 | 1982-01-23 | 1300.00 |         |     10
(14 rows)


2. Obtener todos los datos de todos los departamentos.


SELECT * FROM dept;
deptno |   dname    |   loc  
--------+------------+----------
     10 | ACCOUNTING | NEW YORK
     20 | RESEARCH   | DALLAS
     30 | SALES      | CHICAGO
     40 | OPERATIONS | BOSTON


3. Obtener todos los datos de los administrativos (su trabajo es, en inglés, 'CLERK').


SELECT *FROM emp WHERE job='CLERK';
empno | ename  |  job  | mgr  |  hiredate  |   sal   | comm | deptno
-------+--------+-------+------+------------+---------+------+--------
  7900 | JAMES  | CLERK | 7698 | 1981-12-03 |  950.00 |      |     30
  7369 | SMITH  | CLERK | 7902 | 1980-12-17 |  800.00 |      |     20
  7876 | ADAMS  | CLERK | 7788 | 1983-01-12 | 1100.00 |      |     20
  7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 |      |     10
(4 rows)

4. Idem, pero ordenado por el nombre.

SELECT *FROM emp WHERE job='CLERK' ORDER BY ename;
empno | ename  |  job  | mgr  |  hiredate  |   sal   | comm | deptno 
-------+--------+-------+------+------------+---------+------+--------
  7876 | ADAMS  | CLERK | 7788 | 1983-01-12 | 1100.00 |      |     20
  7900 | JAMES  | CLERK | 7698 | 1981-12-03 |  950.00 |      |     30
  7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 |      |     10
  7369 | SMITH  | CLERK | 7902 | 1980-12-17 |  800.00 |      |     20
(4 rows)


5. Obten el mismo resultado de la pregunta anterior, pero modifcando la sentencia SQL.


 SELECT empno, ename, job, mgr, hiredate, sal, deptno FROM emp WHERE job='CLERK' ORDER BY ename;
empno | ename  |  job  | mgr  |  hiredate  |   sal   | deptno
-------+--------+-------+------+------------+---------+--------
  7876 | ADAMS  | CLERK | 7788 | 1983-01-12 | 1100.00 |     20
  7900 | JAMES  | CLERK | 7698 | 1981-12-03 |  950.00 |     30
  7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 |     10
  7369 | SMITH  | CLERK | 7902 | 1980-12-17 |  800.00 |     20
(4 rows)


6. Obtén el número (código), nombre y salario de los empleados.


SELECT empno, ename, sal FROM emp;
 empno | ename  |   sal
-------+--------+---------
  7698 | BLAKE  | 2850.00
  7499 | ALLEN  | 1600.00
  7521 | WARD   | 1250.00
  7654 | MARTIN | 1250.00
  7844 | TURNER | 1500.00
  7900 | JAMES  |  950.00
  7839 | KING   | 5000.00
  7566 | JONES  | 2975.00
  7902 | FORD   | 3000.00
  7369 | SMITH  |  800.00
  7782 | CLARK  | 2450.00
  7788 | SCOTT  | 3000.00
  7876 | ADAMS  | 1100.00
  7934 | MILLER | 1300.00
(14 rows)


7. Lista los nombres de todos los departamentos.


SELECT dname FROM dept;
dname  
------------
 ACCOUNTING
 RESEARCH
 SALES
 OPERATIONS
(4 rows)


8.Idem, pero ordenándolos por nombre.


SELECT dname FROM dept ORDER BY dname;

dname  
------------
 ACCOUNTING
 OPERATIONS
 RESEARCH
 SALES
(4 rows)



9.Idem, pero ordenándolo por la ciudad (no se debe seleccionar la ciudad en el resultado).


SELECT dname FROM dept ORDER BY loc ;

  dname  
------------
 OPERATIONS
 SALES
 RESEARCH
 ACCOUNTING
(4 rows)


10.Idem, pero el resultado debe mostrarse ordenado por la ciudad en orden inverso.


SELECT dname FROM dept ORDER BY loc desc ;
  dname  
------------
 ACCOUNTING
 RESEARCH
 SALES
 OPERATIONS
(4 rows)


11. Obtener el nombre y empleo de todos los empleados, ordenado por salario.


 SELECT ename, job FROM emp ORDER BY sal desc;

 ename  |    job  
--------+-----------
 KING   | PRESIDENT
 SCOTT  | ANALYST
 FORD   | ANALYST
 JONES  | MANAGER
 BLAKE  | MANAGER
 CLARK  | MANAGER
 ALLEN  | SALESMAN
 TURNER | SALESMAN
 MILLER | CLERK
 WARD   | SALESMAN
 MARTIN | SALESMAN
 ADAMS  | CLERK
 JAMES  | CLERK
 SMITH  | CLERK
(14 rows)


12. Obtener el nombre y empleo de todos los empleados, ordenado primero por su trabajo y luego
por su salario.


SELECT ename, job FROM emp ORDER BY job,sal;

 ename  |    job  
--------+-----------
 FORD   | ANALYST
 SCOTT  | ANALYST
 MILLER | CLERK
 ADAMS  | CLERK
 JAMES  | CLERK
 SMITH  | CLERK
 JONES  | MANAGER
 BLAKE  | MANAGER
 CLARK  | MANAGER
 KING   | PRESIDENT
 ALLEN  | SALESMAN
 TURNER | SALESMAN
 MARTIN | SALESMAN
 WARD   | SALESMAN
(14 rows)


13.Idem, pero ordenando inversamente por empleo y normalmente por salario.


SELECT ename, job FROM emp ORDER BY job desc, sal;
 ename  |    job  
--------+-----------
 MARTIN | SALESMAN
 WARD   | SALESMAN
 TURNER | SALESMAN
 ALLEN  | SALESMAN
 KING   | PRESIDENT
 CLARK  | MANAGER
 BLAKE  | MANAGER
 JONES  | MANAGER
 SMITH  | CLERK
 JAMES  | CLERK
 ADAMS  | CLERK
 MILLER | CLERK
 FORD   | ANALYST
 SCOTT  | ANALYST
(14 rows)


14. Obten los salarios y las comisiones de los empleados del departamento 30.


SELECT sal, comm FROM emp WHERE deptno=30;
sal   |  comm
---------+---------
 2850.00 |      
 1600.00 |  300.00
 1250.00 |  500.00
 1250.00 | 1400.00
 1500.00 |    0.00
  950.00 |      
(6 rows)


15.Idem, pero ordenado por comisión.


SELECT sal, comm FROM emp WHERE deptno=30 ORDER BY comm ;
sal   |  comm
---------+---------
 1500.00 |    0.00
 1600.00 |  300.00
 1250.00 |  500.00
 1250.00 | 1400.00
 2850.00 |      
  950.00 |      
(6 rows)


16. (a) Obtén las comisiones de todos los empleados. (b) Obtén las comisiones de los empleados de

forma que no se repitan.


a.  SELECT comm, ename FROM emp;

  comm   | ename
---------+--------
         | BLAKE
  300.00 | ALLEN
  500.00 | WARD
 1400.00 | MARTIN
    0.00 | TURNER
         | JAMES
         | KING
         | JONES
         | FORD
         | SMITH
         | CLARK
         | SCOTT
         | ADAMS
         | MILLER
(14 rows)


b. SELECT DISTINCT comm, ename FROM emp;
  comm   | ename
---------+--------
         | JONES
         | JAMES
  500.00 | WARD
  300.00 | ALLEN
         | FORD
         | SCOTT
 1400.00 | MARTIN
         | SMITH
         | ADAMS
    0.00 | TURNER
         | BLAKE
         | CLARK
         | MILLER
         | KING
(14 rows)



17. Obtén el nombre de empleado y su comisión SIN FILAS repetidas.


 SELECT DISTINCT comm, ename FROM emp;
comm   | ename
---------+--------
         | JONES
         | JAMES
  500.00 | WARD
  300.00 | ALLEN
         | FORD
         | SCOTT
 1400.00 | MARTIN
         | SMITH
         | ADAMS
    0.00 | TURNER
         | BLAKE
         | CLARK
         | MILLER
         | KING
(14 rows)


18. Obtén los nombres de los empleados y sus salarios, de forma que no se repitan las.


SELECT DISTINCT ename, sal FROM emp;
 ename  |   sal
--------+---------
 MILLER | 1300.00
 FORD   | 3000.00
 SCOTT  | 3000.00
 WARD   | 1250.00
 ALLEN  | 1600.00
 JAMES  |  950.00
 TURNER | 1500.00
 JONES  | 2975.00
 CLARK  | 2450.00
 MARTIN | 1250.00
 KING   | 5000.00
 SMITH  |  800.00
 ADAMS  | 1100.00
 BLAKE  | 2850.00
(14 rows)


19. Obtén las comisiones de los empleados y sus números de departamento, de forma que no se
repitan las filas.


 SELECT DISTINCT ename, deptno, comm FROM emp;
 ename  | deptno |  comm
--------+--------+---------
 KING   |     10 |      
 WARD   |     30 |  500.00
 TURNER |     30 |    0.00
 SMITH  |     20 |      
 CLARK  |     10 |      
 MARTIN |     30 | 1400.00
 ADAMS  |     20 |      
 ALLEN  |     30 |  300.00
 JAMES  |     30 |      
 MILLER |     10 |      
 BLAKE  |     30 |      
 FORD   |     20 |      
 SCOTT  |     20 |      
 JONES  |     20 |      
(14 rows)


20. Obtén los nuevos salarios de los empleados del departamento 30, que resultaran de sumar a su
salario una graticación de 1000. Muestra también los nombres de los empleados.


 SELECT  ename, sal+1000  FROM emp WHERE deptno=30;

ename  | ?column?
--------+----------
 BLAKE  |  3850.00
 ALLEN  |  2600.00
 WARD   |  2250.00
 MARTIN |  2250.00
 TURNER |  2500.00
 JAMES  |  1950.00
(6 rows)


21. Lo mismo que la anterior, pero mostrando también su salario original, y haz que la columna que
almacena el nuevo salario se denomine NUEVO SALARIO.


SELECT  ename,sal+1000 nuevo_salario , sal  FROM emp WHERE deptno=30;

ename  | nuevo_salario |   sal
--------+---------------+---------
 BLAKE  |       3850.00 | 2850.00
 ALLEN  |       2600.00 | 1600.00
 WARD   |       2250.00 | 1250.00
 MARTIN |       2250.00 | 1250.00
 TURNER |       2500.00 | 1500.00
 JAMES  |       1950.00 |  950.00
(6 rows)


22. Halla los empleados que tienen una comisión superior a la mitad de su salario.


SELECT  ename, comm FROM emp WHERE comm>0.5*SAL;

ename  |  comm
--------+---------
 MARTIN | 1400.00
(1 row)


23. Halla los empleados que no tienen comisión, o que la tengan menor o igual que el 25 % de su
salario.


 SELECT  ename, comm FROM emp WHERE comm<=0.25*sal;
ename  |  comm
--------+--------
 ALLEN  | 300.00
 TURNER |   0.00
(2 rows)


24. Obtén una lista de nombres de empleados y sus salarios, de forma que en la salida aparezca en
todas las filas \Nombre:" y \Salario:" antes del respectivo campo. Hazlo de forma que selecciones
exactamente tres expresiones.


SELECT 'Nombre: '||ename nombre,'Salario: '|| sal salario,'Salario total: '|| sal+comm salario_total FROM emp;
     nombre     |     salario      |     salario_total     
----------------+------------------+------------------------
 Nombre: BLAKE  | Salario: 2850.00 |
 Nombre: ALLEN  | Salario: 1600.00 | Salario total: 1900.00
 Nombre: WARD   | Salario: 1250.00 | Salario total: 1750.00
 Nombre: MARTIN | Salario: 1250.00 | Salario total: 2650.00
 Nombre: TURNER | Salario: 1500.00 | Salario total: 1500.00
 Nombre: JAMES  | Salario: 950.00  |
 Nombre: KING   | Salario: 5000.00 |
 Nombre: JONES  | Salario: 2975.00 |
 Nombre: FORD   | Salario: 3000.00 |
 Nombre: SMITH  | Salario: 800.00  |
 Nombre: CLARK  | Salario: 2450.00 |
 Nombre: SCOTT  | Salario: 3000.00 |
 Nombre: ADAMS  | Salario: 1100.00 |
 Nombre: MILLER | Salario: 1300.00 |
(14 rows)



25. Hallar el código, salario y comisión de los empleados cuyo código sea mayor que 7500.


SELECT mgr, sal, comm FROM emp WHERE empno>7500;
  mgr  |   sal   |  comm
------+---------+---------
 7839 | 2850.00 |      
 7698 | 1250.00 |  500.00
 7698 | 1250.00 | 1400.00
 7698 | 1500.00 |    0.00
 7698 |  950.00 |      
      | 5000.00 |      
 7839 | 2975.00 |      
 7566 | 3000.00 |      
 7839 | 2450.00 |      
 7566 | 3000.00 |      
 7788 | 1100.00 |      
 7782 | 1300.00 |      
(12 rows)


26. Obtén todos los datos de los empleados que estén (considerando una ordenación ASCII por
nombre) a partir de la J, inclusive.


SELECT*FROM emp WHERE ename>'J' ORDER BY ename;
empno | ename  |    job    | mgr  |  hiredate  |   sal   |  comm   | deptno
-------+--------+-----------+------+------------+---------+---------+--------
  7900 | JAMES  | CLERK     | 7698 | 1981-12-03 |  950.00 |         |     30
  7566 | JONES  | MANAGER   | 7839 | 1981-04-02 | 2975.00 |         |     20
  7839 | KING   | PRESIDENT |      | 1981-11-17 | 5000.00 |         |     10
  7654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 | 1250.00 | 1400.00 |     30
  7934 | MILLER | CLERK     | 7782 | 1982-01-23 | 1300.00 |         |     10
  7788 | SCOTT  | ANALYST   | 7566 | 1982-12-09 | 3000.00 |         |     20
  7369 | SMITH  | CLERK     | 7902 | 1980-12-17 |  800.00 |         |     20
  7844 | TURNER | SALESMAN  | 7698 | 1981-09-08 | 1500.00 |    0.00 |     30
  7521 | WARD   | SALESMAN  | 7698 | 1981-02-22 | 1250.00 |  500.00 |     30


27. Obtén el salario, comisión y salario total (salario+comisión) de los empleados con comisión,
ordenando el resultado por número de empleado.


SELECT sal, comm , sal+comm Salario_total FROM emp WHERE comm>0 ORDER BY empno;
sal   |  comm   | salario_total
---------+---------+---------------
 1600.00 |  300.00 |       1900.00
 1250.00 |  500.00 |       1750.00
 1250.00 | 1400.00 |       2650.00
(3 rows)


28. Lista la misma información, pero para los empleados que no tienen comisión.


SELECT sal, comm , sal+comm Salario_total FROM emp WHERE comm=0 ORDER BY empno;
sal   | comm | salario_total
---------+------+---------------
 1500.00 | 0.00 |       1500.00
(1 row)


29. Muestra el nombre de los empleados que, teniendo un salario superior a 1000, tengan como jefe
al empleado cuyo código es 7698.


SELECT ename FROM emp WHERE sal > 1000 and mgr = 7698;
ename
-------
 ALLEN
WARD
MARTIN
TURNER
(4 rows)


30. Halla el conjunto complementario del resultado del ejercicio anterior.


SELECT ename FROM emp WHERE sal < 1000 and mgr <> 7698 OR mgr IS NULL;
ename
-------
BLAKE 
JAMES
KING 
JONES
FORD
SMITH
CLARK
SCOTT
ADAMS
MILLER

(10 rows)



31. Indica para cada empleado el porcentaje que supone su comisión sobre su salario, ordenando el
resultado por el nombre del mismo.


SELECT ename, comm, (comm/sal)*100 Porcentaje from emp;
ename  |  comm   |       porcentaje      
--------+---------+-------------------------
 BLAKE  |         |                      
 ALLEN  |  300.00 | 18.75000000000000000000
 WARD   |  500.00 | 40.00000000000000000000
 MARTIN | 1400.00 |    112.0000000000000000
 TURNER |    0.00 |  0.00000000000000000000
 JAMES  |         |                      
 KING   |         |                      
 JONES  |         |                      
 FORD   |         |                      
 SMITH  |         |                      
 CLARK  |         |                      
 SCOTT  |         |                      
 ADAMS  |         |                      
 MILLER |         |                      
(14 rows)


32. Hallar los empleados del departamento 10 cuyo nombre no contiene la cadena LA.


SELECT ename FROM emp WHERE deptno=10 AND ename LIKE '%LA%';
ename
-------
 CLARK
(1 row)


33. Obtén los empleados que no son supervisados por ningún otro.


SELECT ename FROM emp WHERE mgr is NULL;
ename
-------
 KING
(1 row)


34. Obtén los nombres de los departamentos que no sean Ventas (SALES) ni investigación (RESEARCH).
Ordena el resultado por la localidad del departamento.


SELECT dname FROM dept WHERE dname<>'SALES'AND dname<>'RESEARCH' ORDER BY loc;
dname  
------------
 OPERATIONS
 ACCOUNTING
(2 rows)


35. Deseamos conocer el nombre de los empleados y el código del departamento de los administra-
tivos(CLERK) que no trabajan en el departamento 10, y cuyo salario es superior a 800, ordenado
por fecha de contratación.


SELECT ename FROM emp WHERE job='CLERK' AND deptno<>10 AND sal>800;
ename
-------
 JAMES
 ADAMS
(2 rows)


36. Para los empleados que tengan comisión, obtén sus nombres y el cociente entre su salario y su
comisión (excepto cuando la comisión sea cero), ordenando el resultado por nombre.


SELECT ename, sal/comm cociente FROM emp WHERE comm > 0 ORDER BY ename;
ename  |        cociente       
--------+------------------------
 ALLEN  |     5.3333333333333333
 MARTIN | 0.89285714285714285714
 WARD   |     2.5000000000000000
(3 rows)



37. Lista toda la información sobre los empleados cuyo nombre completo tenga exactamente 5 car-
acteres.


 SELECT *FROM emp WHERE ename LIKE'______';  (6 _)


38. Lo mismo, pero para los empleados cuyo nombre tenga al menos cinco letras.


SELECT*FROM emp WHERE  ename>='_____';  (5_)


39. Halla los datos de los empleados que, o bien su nombre empieza por A y su salario es superior
a 1000, o bien reciben comisión y trabajan en el departamento 30.


SELECT ename FROM emp WHERE  (ename like 'A%' anD sal>1000) OR (comm=0 AND deptno=30);


40. Halla el nombre, el salario y el sueldo total de todos los empleados, ordenando el resultado
primero por salario y luego por el sueldo total. En el caso de que no tenga comisión, el sueldo
total debe reflejar solo el salario.

SELECT ename, sal, sal+ comm Sueldo_total FROM emp ORDER BY sal ,  sal+comm;

41. Obtén el nombre, salario y la comisión de los empleados que perciben un salario que está entre
la mitad de la comisión y la propia comisión.


SELECT ename, sal, comm FROM emp WHERE sal BETWEEN comm/2 AND comm;


42. Obtén el complementario del anterior.


SELECT ename, sal, comm FROM emp WHERE sal NOT BETWEEN comm/2 AND comm;


43. Lista los nombres y empleos de aquellos empleados cuyo empleo acaba en MAN y cuyo nombre
empieza por A.


SELECT ename, job FROM emp WHERE job LIKE'%MAN' AND ename LIKE'A%';


44. Intenta resolver la pregunta anterior con un predicado simple, es decir, de forma que en la
cláusula WHERE no haya conectores lógicos como AND, OR, etc. Si ayuda a resolver la pregunta, se
puede suponer que el nombre del empleado tiene al menos cinco letras.

SELECT ename, job FROM emp WHERE ename||job LIKE 'A%MAN';


45. Halla los nombres de los empleados cuyo nombre tiene como máximo cinco caracteres.

SELECT ename FROM emp WHERE ename LIKE '_____';


46. Suponiendo que el año próximo la subida del sueldo total de cada empleado será del 6 %, y el
siguiente del 7 %, halla los nombres y el salario total actual, del año próximo y del siguiente, de
cada empleado. Indique además con SI o NO, si el empleado tiene comisión. Como en la pregunta
40, si no tiene comisión, el total se considera igual al salario. Se supone que no existen comisiones
negativas.



SELECT ename, sal, sal+ comm  Salario_actual, sal+comm+(sal+comm)*0.6  Salario_proximo, sal+comm+(sal+comm)*0.7 Salario_dos_proximo, 'Si' Comision FROM emp WHERE comm>0 UNION SELECT ename, sal, sal+ comm  Salario_actual, sal+comm+(sal+comm)*0.6  Salario_proximo, sal+comm+(sal+comm)*0.7 Salario_dos_proximo, 'No' Comision FROM emp WHERE comm IS NULL;

ename  |   sal   | salario_actual | salario_proximo | salario_dos_proximo | comision
--------+---------+----------------+-----------------+---------------------+----------
 SMITH  |  800.00 |                |                 |                     | No
 SCOTT  | 3000.00 |                |                 |                     | No
 JONES  | 2975.00 |                |                 |                     | No
 FORD   | 3000.00 |                |                 |                     | No
 CLARK  | 2450.00 |                |                 |                     | No
 ALLEN  | 1600.00 |        1900.00 |        3040.000 |            3230.000 | Si
 MILLER | 1300.00 |                |                 |                     | No
 ADAMS  | 1100.00 |                |                 |                     | No
 JAMES  |  950.00 |                |                 |                     | No
 KING   | 5000.00 |                |                 |                     | No
 WARD   | 1250.00 |        1750.00 |        2800.000 |            2975.000 | Si
 MARTIN | 1250.00 |        2650.00 |        4240.000 |            4505.000 | Si
 BLAKE  | 2850.00 |                |                 |                     | No
(13 rows)



47. Lista los nombres y fecha de contratación de aquellos empleados que no son vendedores (SALESMAN).


SELECT ename, hiredate FROM emp WHERE job<>'SALESMAN';


48. Obtén la información disponible de los empleados cuyo número es uno de los siguientes: 7844,
7900, 7521, 7521, 7782, 7934, 7678 y 7369, pero que no sea uno de los siguientes: 7902, 7839, 7499
ni 7878. La sentencia no debe complicarse innecesariamente, y debe dar el resultado correcto
independientemente de lo empleados almacenados en la base de datos.


SELECT*FROM emp WHERE((empno=7844) OR (empno=7900) OR (empno=7521) OR (empno=7782) OR (empno=7934) OR (empno=7678) OR (empno=7369))AND((empno<>7902)OR(empno<>7839)OR(empno<>7499)OR(empno<> 7878));
empno | ename  |   job    | mgr  |  hiredate  |   sal   |  comm  | deptno
-------+--------+----------+------+------------+---------+--------+--------
  7521 | WARD   | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 |     30
  7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 |   0.00 |     30
  7900 | JAMES  | CLERK    | 7698 | 1981-12-03 |  950.00 |        |     30
  7369 | SMITH  | CLERK    | 7902 | 1980-12-17 |  800.00 |        |     20
  7782 | CLARK  | MANAGER  | 7839 | 1981-06-09 | 2450.00 |        |     10
  7934 | MILLER | CLERK    | 7782 | 1982-01-23 | 1300.00 |        |     10
(6 rows)


49. Ordena los empleados por su código de departamento, y luego de manera descendente por su
número de empleado.


SELECT ename, deptno, empno FROM emp ORDER BY deptno, empno desc; 


50. Para los empleados que tengan como jefe a un empleado con código mayor que el suyo, obtén
los que reciben de salario más de 1000 y menos de 2000, o que están en el departamento 30.


SELECT ename, mgr, sal FROM emp WHERE mgr>empno AND ((sal<2000 AND sal>1000)OR(deptno=30));
ename  | mgr  |   sal  
--------+------+---------
 BLAKE  | 7839 | 2850.00
 ALLEN  | 7698 | 1600.00
 WARD   | 7698 | 1250.00
 MARTIN | 7698 | 1250.00
(4 rows)






4 comentarios:

  1. muy practico!!
    para usar el valor de la comision en el caso de que este sea null y poder operar con el matemáticamente, puede usarse la funcion IFNULL (comm,0) la cual nos debolverá 0 en el caso en el que la comisión tenga el valor null.
    Saludos.

    ResponderEliminar
  2. muchas gracias por todo esta valiosa infomarcion

    ResponderEliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar

  4. твоя мопс плохая чертова
    цветная дверь суки

    ResponderEliminar

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | GreenGeeks Review