Sunteți pe pagina 1din 16

PRACTICO SQL 2

1.- Crear una consulta que despliegue el last name y salary de los empleados que ganan ms de
$12.000. Escribe tu sentencia SQL en un archivo de texto llamado lab2_1.sql. Ejecutar la consulta
SELECT last_name, salary
FROM employees
WHERE salary > 12000;
2.- Crear una consulta que despliegue el last_name del empleado y department number para cada
nmero de empleado 176
SELECT last_name , department_number
FROM employees
WHERE employee_id = 176;
3.- Modificar lab2_1.sql para desplegar el last name y salary para todos los empleados cuyo
salario no esta en el rango de $5.000 y $12.000. Escribe tu sentencia SQL en el texto del archivo
nombrado
SELECT last_name, salary
FROM employees
WHERE salary NOT BEETWEEN 5000 AND 12000;
4.- Desplegar el last_name del empleado, job ID y start date de empleados cuya hired (fecha de
empleo) est entre Febrero 20, 1998, y Mayo 1, 1998. Ordenar la consulta ascendentemente por
start date
SELECT last_name, job_id, start_date
FROM employees
WHERE hired BEETWEEN 20-FEB-1998 AND 1-MAY-1998
ORDER BY start_date ASC;
5.- Desplegar el last name y department number de todos los empleados del departamento 20 y
50, ordenar alfabticamente por name
SELECT last_name, departament_number
FROM employees
WHERE departament_number IN(20,50)
ORDER BY last_name;
6.- Modificar lab2_3.sql para listar el last name y salary de empleados que ganan entre $5.000 y
$12.000 y estn en el departamento 20 o 50. Etiquetar las columnas por employee y monthly
salary, respectivamente. Regrabar lab2_3.sql como lab2_6.sql. Ejecutar la sentencia en lab2_6.sql
SELECT last_name AS employee, salary AS monthly salary
FROM employees
WHERE salary BETWEEN 5000 AND 12000
AND departament_id in (20,50);
7.- Desplegar el last name y el hire date de cada empleado que ha sido empleado en el ao 1994
SELECT last_name, hire_date

FROM employees
WHERE hire_date LIKE %94;
8.- Desplegar el last name y job title de todos los empleados que no tienen un administrador
SELECT last_name, job_id
FROM employees
WHERE manager_id IS NULL;
9.- Desplegar el last name, salary y commissions para todos los empleados que ganan
comisiones. Ordenar datos descendentemente de salary y commisions
SELECT last_name, salary , commission_pct
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY salary DESC ,commission_pct DESC;
10.- Desplegar los last name de todos los empleados donde la tercera letra del nombre es una a
SELECT last_name
FROM employees
WHERE last_name LIKE ___a%;
11.- Desplegar el last name de todos los empleados que tienen una a y una e en su last name
SELECT last_name
FROM employees
WHERE last_name LIKE %a% AND last_name LIKE %e%;
12 Desplegar el last name, job y salary para todos los empleados que tienen como job sales
representative o stock clerk y cuyo salary no es igual al $2.500, $3.500 o $7.000
SELECT last_name, job_id, salary
FROM employees
WHERE job _sales in(SA_REP, ST_CLERK )
AND salary NOT in(2500,3500,7000);
13.- Modificar lab2_6.sql para desplegar el last name, salary y comisin para todos los
empleados cuya comisin es un 20%. Regrabar lab2_6.sql como lab2_13.sql. Ejecutar la
sentencia lab2_13.sql
SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pct = .20;

PRACTICO 3 SQL
1.- Para cada empleado, desplegar el apellido, y calcular el nmero de meses entre la fecha
actual y la fecha de contrato. Etiquetar la columna como MESES TRABAJADOS. Ordenar la
consulta por el nmero de meses trabajados. Redondear el nmero de meses hasta el entero
ms cercano.
SELECT last_name, ROUND(MONTHS_BEETWEEN(SYSDATE, hire_date),0) AS MESES
TRABAJADOS
FROM employees
ORDER BY ROUND(MONTHS_BEETWEEN(SYSDATE, hire_date),0);
2.- Escribe una consulta que despliegue lo siguiente para cada empleado
<apellido del empleado> recibe <salario> mensualmente, pero quiere recibir <tres veces su
salario>. Etiqueta la columna como SALARIO SOADO
SELECT last_name || ' recibe ' || salary || ' mensualmente, pero quiere recibir ' || salary *3 AS
"SALARIO SOADO"
FROM employees;
3.- Escriba una consulta que despliegue el apellido, y el salario para todos los empleados. El
formato de salario debe ser de 15 caracteres de largo, completar con el comodn $ a la izquierda.
Etiquetar la columna como SALARIO.
SELECT last_name, LPAD(salary,15,'$') AS "SALARIO"
FROM employees;
4.- Desplegar para cada empleado el apellido, la fecha de contrato, y la fecha de revisin de
salario, con el primer lunes despus de seis meses de servicio. Etiquetar la columna como
REVISION. El formato de la fecha debe ser similar a Monday, the Thirty-First of July, 2000
SELECT last_name, hire_date, TO_CHAR(NEXT_DAY(ADD_MONTHS(hire_date,6),'MONDAY'),
'fmDay , "the" Ddspth "of" Month, YYYY') AS "REVISION"
FROM employees;
5.- Desplegar el apellido, la fecha de contrato, y el da de la semana en que el empleado inicio su
empleo. Etiquetar la columna como DIA.Ordena el resultado por el da de la semana iniciado
con el lunes.
SELECT last_name, hire_date, TO_CHAR(hire_date,'DAY') AS "DIA"
FROM employees
ORDER BY TO_CHAR(hire_date - 1 ,'d');
6.- Crear una consulta que despliegue el apellido del empleado y comisin. Si el empleado no
gana comisin, desplegar Sin Comisin Etiquetar la columna como COMM
SELECT last_name, NVL(TO_CHAR(commission_pct),'Sin Comisin') AS "COMM"
FROM employees;
7.- Crear una consulta que despliegue el apellido del empleado, y la cantidad anual de su salario
con asteriscos. Cada asterisco significa miles de dlares. Ordenar los datos descendentemente
por salario. Etiquetar la columna como EMPLEADO Y SU SALARIO

SELECT last_name, RPAD(' ' , salary/1000+1,'*')


FROM employees;
8.- Usando la funcin DECODE, escribir una consulta que despliegue el grado de todos los
empleados basados en los valores de la columna CARGO_ID, como se muestra a continuacin:
CARGO GRADO
AD_PRES A
ST_MAN B
IT_PROG C
SA_REP D
ST_CLERK E
Ninguno de los anteriores 0
SELECT CARGO_ID, DECODE(
'AD_PRES','A',
'ST_MAN','B',
'IT_PROG','C',
'SA_REP','D',
'ST_CLERK','E',
'0'
)
FROM employees;
8.- Reescribe la consulta anterior utilizando la clusula CASE.
SELECT CARGO_ID , CASE CARGO_ID
WHEN 'AD_PRES' THEN 'A'
WHEN 'ST_MAN' THEN 'B'
WHEN 'IT_PROG' THEN 'C'
WHEN 'SA_REP' THEN 'D'
WHEN 'ST_CLERK' THEN 'E'
ELSE '0'
FROM employees;

PRACTICO 4 SQL
Desplegando Datos de Mltiples Tablas
1.- Escriba una consulta que despliegue el apellido, nmero y nombre del departamento para
todos los empleados
SELECT e.last_name, d.departament_id, d.departament_name
FROM employees e, departaments d
WHERE e.departament_id = d.departament_id;
2.- Crear una nica lista de todos los identificadores de los cargos que estn en el departamento
80. Incluir la localizacin del departamento en la salida
SELECT e.job_id , l.location_name
FROM employees e, locations l, departaments d
WHERE e.departament_id = d.departament_id AND d.location_id = l.location_id
AND e.departament_id = 80;
3.- Escribir una consulta que despliegue el apellido del empleado, nombre del departamento,
localizacin y ciudad de todos los empleados que ganan comisin
SELECT e.last_name, d.departament_name, l.location_id, l.city
FROM employees e, departaments d , locations l
WHERE e.departament_id = d.departament_id AND d.location_id = l.location_id
AND commission_pct IS NOT NULL;
4.- Desplegar el apellido del empleado y nombre del departamento para todos los empleados que
tienen una a minscula en su apellido. Escribir tu sentencia SQL en un archivo de texto
llamado lab4_4.sql
SELECT e.last_name, d.departament_name
FROM employees e, departaments d
WHERE e.departament_id = d.departament_id
AND e.last_name LIKE '%a%';
5.- Escribir una consulta que despliegue el apellido, cargo, nmero y nombre de departamento
para todos los empleados que trabajan en Toronto
SELECT e.last_name, e.job_id, d.departament_id, d.departament_name
FROM employees e, departaments d, locations l
WHERE e.departament_id = d.departament_id AND d.location_id = l.location_id
AND LOWER(l.city) = LOWER('Toronto');
6.- Desplegar el apellido y nmero del empleado con el apellido de su administrador y nmero de
este. Etiquetar las columnas como Empleado, Emp#, Administrador y Mgr#, respectivamente.
Escribir tu sentencia SQL en un archivo de texto llamado lab4_6.sql
SELECT e.last_name AS "Empleado" , e.employee_id AS "Emp#", a.last_name AS
"Administrador", a.manager_id AS "Mgr#"

FROM employees e, managers a WHERE e.manager_id = a.manager_id; PRACTICO 5 SQL


SOLUTION
diciembre 6, 2008estebanfuentealbaDeja un comentario
Prctica 5

1.- Las funciones de grupo trabajan cruzando muchas filas para producir un resultado (V)(F)
V
2.- Las funciones de grupo incluyen nulos en sus clculos (V)(F)
F
3.- La clusula WHERE restringe filas antes de la inclusin en un clculo de funciones de grupo
(V)(F)
V
4.- Desplegar el salario mximo, mnimo, sumatoria, y promedio de todos los trabajadores.
Etiquetar Mximo, Mnimo, Sumatoria, Promedio respectivamente. Redondear los resultados al
entero ms prximo. Guardar la consulta como Lab5_4.sql
SELECT ROUND(MAX(salary),0) AS "Maximo" , ROUND(MIN(salary),0) AS "Minimo",
ROUND(SUM(salary),0) AS "Sumatoria", ROUND(AVG(salary),0) AS "Promedio"
FROM employees;
5.- Modificar la consulta Lab5_4 para que despliegue el salario mximo, mnimo, sumatoria y
promedio para cada tipo de cargo. Guardar la consulta como Lab5_5.sql

SELECT ROUND(MAX(salary),0) AS "Maximo" , ROUND(MIN(salary),0) AS "Minimo",


ROUND(SUM(salary),0) AS "Sumatoria", ROUND(AVG(salary),0) AS "Promedio"
FROM employees;
GROUP BY jod_id;
6.- Escribir una consulta que despliegue el nmero de trabajadores con el mismo cargo.

SELECT COUNT(*)
FROM employees
GROUP BY job_id;
7.- Determinar el nmero de administradores sin ellos en el listado. Etiquetar la columna como
Nmero de Administradores
SELECT COUNT(DISTINCT manager_id) AS "Nmero de Administradores"
FROM employees;
8.- Escribir una consulta que despliegue la diferencia entre el salario mximo y mnimo. Etiquetar
la columna como diferencia
SELECT (MAX(salary) - MIN(salary)) AS "diferencia"
FROM employees;

9.- Despliega el identificador del administrador y el salario del empleado que menos recibe por
administrador. Excluir aquellos donde el administrador no es conocido. Excluir cualquier grupo
donde el salario mnimo es 6000 o menor. Ordenar la consulta descendentemente por salario
SELECT manager_id ,salary
FROM emlpoyees
WHERE manager_id IS NOT NULL
GROUP BY manager_id
HAVING MIN(salary) &gt; 6000
ORDER BY MIN(salary) DESC;
10.- Escribir una consulta que despliegue para cada departamento, nombre, nmero de
empleados y salario promedio para todos los empleados del departamento. Etiquetar las
columnas como: Nombre, Localizacin, Numero de personas y Salario respectivamente.
Redondear el salario promedio a dos decimales.
SELECT d.departament_name AS "Nombre" , COUNT(*) AS "Numero de personas",
ROUND(AVG(salary),2) AS "Salario"
FROM departaments d, employees e
WHERE e.departament_id = d.departament_id
GROUP BY d.departament_name;
11.- Crear una consulta que despliegue el nmero total de empleados y el total de empleados
contratado en 1995, 1996, 1997 y 1998. Etiquetar con encabezados apropiados cada columna.
SELECT COUNT(*) AS "Total" ,
SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1995,1,0)) AS "1995" ,
SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1996,1,0)) AS "1996" ,
SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1997,1,0)) AS "1997" ,
SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1998,1,0)) AS "1998"
FROM employees;
12.- Crear una consulta en una matriz que despliegue el cargo, salario, para cada cargo basado
en un nmero de departamento y el salario total para cada cargo, para los departamentos 20, 50,
80, 90. Dar a cada columna un encabezado apropiado.
SELECT job_id,
SUM (DECODE(departament_id,20,salary)) AS "Departamento 20",
SUM (DECODE(departament_id,50,salary)) AS "Departamento 50",
SUM (DECODE(departament_id,80,salary)) AS "Departamento 80",

SUM (DECODE(departament_id,90,salary)) AS "Departamento 90",


SUM(salary) AS "Salario Total"
FROM employees
GROUP BY job_id;

PRACTICO 6 SQL SOLUTION


diciembre 6, 2008estebanfuentealbaDeja un comentario
Prctica 6

1.- Escribir una consulta que despliegue el apellido y fecha de contrato de cualquier empleado
que trabaje en el mismo departamento que Zlotkey. Excluir a Zlotkey
SELECT last_name, hire_date
FROM employees
WHERE departament_id = (SELECT departament_id FROM employees WHERE last_name =
'Zlotkey')
AND last_name 'Zlotkey';
2.- Crear una consulta que despliegue el nmero del empleado y su apellido de aquellos
empleados que ganan ms que el salario promedio. Ordenar ascendentemente por salario
SELECT employee_id, last_name
FROM employees
WHERE salary &gt; (SELECT AVG(salary) FROM employees)
ORDER BY salary ASC;
3.- escribir una consulta que despliegue el nmero del empleado y su apellido de aquellos
empleados que trabajan en un departamento con cualquier empleado que tenga una u en su
apellido. Escribir tu consulta SQL en un texto llamado lab6-3.sql. Ejecutar tu consulta
SELECT employee_id, last_name
FROM employees
WHERE departament_id IN (SELECT departament_id FROM employees WHERE
LOWER(last_name) LIKE '%u%');
4.- Desplegar el apellido, nmero de departamento e identificador del cargo de todos los
empleados cuya localizacin de departamento es 1700
SELECT last_name, departament_id, job_id
FROM employees
WHERE departament_id in (SELECT departament_id FROM departaments WHERE location_id =
1700);
5.- Desplegar el apellido y salario para cada empleado que reporte a King

SELECT apellido, salary


FROM employees
WHERE manager_id in (SELECT manager_id FROM employees WHERE LOWER(last_name) =
'king');
6.- Desplegar el nmero de departamento, apellido e identificador del cargo para cada empleado
en el departamento Executive
SELECT departament_id, last_name, job_id
FROM employees
WHERE departament_id = (SELECT departament_id FROM departaments WHERE
departament_name= 'Executive');
7.- Modificar la consulta lab6-3.sql para desplegar el nmero del empleado, apellido y salario de
todos aquellos empleados que ganan ms que el salario promedio y que trabaja en un
departamento con cualquier empleado en cuyo nombre tenga una u. Regrabar lab6-3.sql como
lab6-7.sql. Ejecutar tu archivo lab6-7.sql
SELECT employee_id, last_name, salary
FROM employees
WHERE departament_id IN (SELECT departament_id FROM employees WHERE
LOWER(last_name) LIKE '%u%')
AND salary &gt; (SELECT AVG(salary) FROM employees);

PRACTICO 7 SQL SOLUTION


Determine si las siguientes dos preguntas son verdadera o falsa

1.- La siguiente sentencia es valida: (V) (F)


DEFINE & p_val = 100
F
2.- El comando DEFINE es un comando SQL (V) (F)
F
3.- Escriba un script para desplegar el apellido de un empleado, cargo y fecha de contrato para
todos los empleados que se iniciaron entre un rango dado. Concatenar nombre y trabajo juntos,
separado por un espacio y coma, y etiquetar la columna como Empleado. En un archivo Script
SQL separado, use el comando DEFINE para proveer los dos rangos. Use el formato
MM/DD/YYYY. Grabar los archivos script como lab7-3a.sql y lab7-3b.sql
DEFINE fechaInicio = 01/01/1987
DEFINE fechaTermino = 01/01/2007
SELECT last_name || ', ' || job_id AS "Empleado" , hire_date
FROM employees
WHERE hire_date BEETWEEN TO_DATE(&amp;fechaInicio,'MM/DD/YYYY') AND
TO_DATE(&amp;fechaTermino,'MM/DD/YYYY');
4.- Escribir un script para desplegar el apellido, el identificador del cargo y nombre del
departamento para cada empleado en una localizacin dada. Grabar el archivo script como lab74.sql
SELECT e.last_name , e.job_id, d.departament_name
FROM employees e, departaments d, locations l
WHERE e.departament_id = d.departament_id AND d.location_id = l.location_id
AND l.city = '&amp;entrada';

PRACTICA 3
1. Escriba una consulta para mostrar la fecha actual. Etiquete la columna como Date.
SELECT SYSDATE as "Date" FROM DUAL
2. El departamento de recursos humanos necesita mostrar el nmero de empleado, el apellido, el salario
y el salario aumentado en un 15,5 % (expresado como nmero entero) de cada empleado. Etiquete la
columna como New Salary. Guarde la sentencia SQL en un archivo de texto denominado lab_03_02.sql.
SELECT EMPloyee_id, last_name, Salary, TRUNC(Salary*1.15) as "New Salary" FROM
employees
3. Ejecute la consulta del archivo lab_03_02.sql.

...
4. Agregar una columna que reste el antiguo salario al nuevo salario. Etiquete la columna como
Increase.
SELECT EMPloyee_id, last_name, Salary, TRUNC(Salary*1.155) as "New Salary" ,
(TRUNC(Salary*1.155)-Salary) as "Increase" FROM employees

5. Escriba una consulta que muestre el apellido (con la primera letra en maysculas y las dems en
minsculas) y la longitud del apellido de todos los empleados cuyo nombre comience por J, A o M.
Etiquete cada columna de forma adecuada. Ordene los resultados por los apellidos de los empleados.
SELECT INITCAP(last_name) as "Name", LENGTH(last_name) as "Length" FROM employees
WHERE SUBSTR(last_name,1,1) IN ('J','A','M')
Reescriba la consulta para que se pida al usuario que introduzca la primera letra de un apellido. Por
ejemplo, si el usuario introduce H cuando se le pida una letra, la salida debera mostrar todos los
empleados cuyo apellido comience por la letra H.

SELECT INITCAP(last_name) as "Name", LENGTH(last_name) as "Length" FROM employees


WHERE SUBSTR(last_name,1,1) IN (:v_caracter)
6. El departamento de recursos humanos desea averiguar el tiempo que llevan contratados todos los
empleados. Para cada empleado, muestre el apellido y calcule el nmero de meses entre hoy y la fecha
en que se contrat. Etiquete la columna como MONTHS_WORKED. Ordene los resultados por el
nmero de meses empleado. Redondee el nmero de meses al nmero entero ms cercano.
Nota: Los resultados que obtenga diferirn.
SELECT INITCAP(last_name) as "Name", ROUND( MONTHS_BETWEEN( SYSDATE ,
HIRE_DATE ) ) as "MONTHS_WORKED"
FROM employees
ORDER BY ROUND( MONTHS_BETWEEN( SYSDATE , HIRE_DATE ) )

7. Cree un informe que cree lo siguiente para cada empleado:


<employee last name> earns <salary> monthly but wants <3 times salary>. Etiquete la columna como
Dream Salaries.
SELECT LAST_NAME || ' earns' || TO_CHAR( SALARY , '$99999.99' ) || ' monthly but wants' ||
TO_CHAR( 3*SALARY , '$99999.99' ) || '.' as "Dream Salaries" FROM EMPLOYEES

8. Cree una consulta para mostrar el apellido y el salario de todos los empleados. Formatee el salario
para que tenga una longitud de 15 caracteres, rellenados a la izquierda con el smbolo $. Etiquete la
columna como SALARY.
SELECT LAST_NAME, LPAD( Salary, 15, '$') as "SALARY" FROM EMPLOYEES

9. Muestre el apellido, la fecha de contratacin y la fecha de revisin salarial de cada empleado, que es
el primer lunes despus de seis meses de servicio. Etiquete la columna como REVIEW. Formatee las
fechas para que aparezca en un formato similar a Monday, the Thirty-First of July, 2000.
SELECT LAST_NAME, HIRE_DATE, Salary, TO_CHAR( NEXT_DAY( ADD_MONTHS( HIRE_DATE,
6 ) , 'Lunes') , 'fmDAY" de "fmDDSPTH" de "fmMONTH", "fmYYYY') as "REVIEW" FROM
EMPLOYEES
10. Muestre el apellido, la fecha de contratacin y el da de la semana en que empez el empleado.
Etiquete la columna como DAY. Ordene los resultados por da de la semana, empezando por el lunes.
SELECT LAST_NAME, HIRE_DATE, TO_CHAR(HIRE_DATE,'fmDAY') as "DAY" FROM EMPLOYEES
ORDER BY NEXT_DAY(HIRE_DATE,'Lunes')
SELECT LAST_NAME, HIRE_DATE, TO_CHAR(HIRE_DATE,'fmDAY','nls_date_language=spanish') as
"DAY" FROM EMPLOYEES ORDER BY NEXT_DAY(HIRE_DATE,'Lunes')
SELECT LAST_NAME, HIRE_DATE, TO_CHAR(HIRE_DATE,'fmDAY') as "DAY" FROM EMPLOYEES
ORDER BY to_char(HIRE_DATE,'d')
11. Cree una consulta que muestre los apellidos y los importes de comisin de los empleados. Si un
empleado no gana ninguna comisin, muestre No Commission. Etiquete la columna como COMM.

SELECT LAST_NAME, DECODE( NVL(commission_pct,0) , 0 , 'No Commission',


(commission_pct*salary)/100 ) as "COMM" FROM EMPLOYEES

12. Cree una consulta que muestre los ocho primeros caracteres de los apellidos de los
empleados e indique los importes de sus salarios con asteriscos. Cada asterisco representa
mil dlares. Clasifique los datos en orden descendente de salario. Etiquete la columna
como EMPLOYEES_AND_THEIR_SALARIES.
SELECT LAST_NAME || ' ' || LPAD( '*' , SALARY/1000, '*' ) as "EMPLOYEE_AND
_THEIR_SALARIES" FROM EMPLOYEES ORDER BY ( SALARY/1000 ) DESC
13. Mediante la funcin DECODE, escriba una consulta que muestre el grado de todos los empleados
basndose en el valor de la columna JOB_ID, mediante estos datos:
Puesto Grado
AD_PRES A
ST_MAN B
IT_PROG C
SA_REP D
ST_CLERK E
Ninguno de las anteriores 0
SELECT JOB_ID, DECODE( JOB_id, 'AD_PRES', 'A', 'ST_MAN', 'B', 'IT_PROG', 'C', 'SA_REP', 'D',
'ST_CLERK', 'E', JOB_id, 'O') as "GRADE" FROM EMPLOYEES
14. Vuelva a escribir la sentencia del ejercicio anterior mediante la sintaxis CASE.
SELECT JOB_ID,
CASE job_id
WHEN 'AD_PRES' THEN 'A'
WHEN 'ST_MAN' THEN 'B'
WHEN 'IT_PROG' THEN 'C'
WHEN 'SA_REP' THEN 'D'
WHEN 'ST_CLERK'THEN 'D'
ELSE 'O'
END "GRADE"
FROM EMPLOYEES

PRACTICA 4
Determine la validez de las tres siguientes afirmaciones. Seleccione Verdadero o Falso.
1. Las funciones de grupo trabajan a travs de muchas filas para generar un resultado.
Verdadero/Falso
2. Las funciones de grupo incluyen valores nulos en los clculos.
Verdadero/Falso
3. La clusula WHERE restringe las filas antes de incluirlas en un clculo de grupo.
Verdadero/Falso
El departamento de recursos humanos necesita estos informes:
4. Busque el salario ms alto, el ms bajo, la suma y el salario medio de todos los empleados.
Etiquete las columnas como Maximum, Minimum, Sum y Average, respectivamente. Redondee
los resultados al siguiente nmero entero. Guarde la sentencia SQL en un archivo de texto
denominado lab_04_04.sql.

SELECT ROUND(MAX(salary),0) AS "Maximo" , ROUND(MIN(salary),0) AS "Minimo",


ROUND(SUM(salary),0) AS "Sumatoria", ROUND(AVG(salary),0) AS "Promedio"
FROM employees;

5. Modifique la consulta en lab_04_04.sql para mostrar el salario mnimo, el mximo, la suma y el


salario medio para cada tipo de trabajo. Vuelva a guardar lab_04_04.sql como lab_04_05.sql.
Ejecute la sentencia en lab_04_05.sql.

SELECT ROUND(MAX(salary),0) AS "Maximo" , ROUND(MIN(salary),0) AS "Minimo",


ROUND(SUM(salary),0) AS "Sumatoria", ROUND(AVG(salary),0) AS "Promedio"
FROM employees;
GROUP BY jod_id;
6. Escriba una consulta para mostrar el nmero de personas con el mismo puesto.

SELECT COUNT(*)
FROM employees
GROUP BY job_id;
7. Determine el nmero de supervisores sin listarlos. Etiquete la columna como Number of
Managers. Indicacin: Utilice la columna MANAGER_ID para determinar el
nmero de
supervisores.

SELECT COUNT(DISTINCT manager_id) AS "Nmero de Administradores"


FROM employees;
8. Busque la diferencia entre el salario ms alto y el ms bajo. Etiquete la columna como
DIFFERENCE.

SELECT (MAX(salary) - MIN(salary)) AS "diferencia"


FROM employees;
Si le queda tiempo, realice los siguientes ejercicios:
9. Cree un informe para mostrar el nmero de supervisor y el salario del empleado peor pagado
de ese supervisor. Excluya a los empleados cuyo supervisor no se conozca. Excluya los grupos

en los que el salario mnimo sea 6.000 dlares o menos. Clasifique la salida en orden
descendente de salario.

SELECT manager_id ,salary


FROM emlpoyees
WHERE manager_id IS NOT NULL
GROUP BY manager_id
HAVING MIN(salary) &gt; 6000
ORDER BY MIN(salary) DESC;

Si desea afrontar un desafo mayor, realice estos ejercicios:


10. Cree una consulta que muestre el nmero total de empleados y, de dicho total, el nmero de
empleados contratados en 1995, 1996, 1997 y 1998. Cree las cabeceras de columna adecuadas.

SELECT COUNT(*) AS "Total" ,


SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1995,1,0))
SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1996,1,0))
SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1997,1,0))
SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1998,1,0))
FROM employees;

AS "1995" ,
AS "1996" ,
AS "1997" ,
AS "1998"

11. Cree una consulta de matriz para mostrar el trabajo, el salario de dicho puesto basado en el
nmero de departamento y el salario total de ese puesto de los departamentos 20, 50, 80 y 90, y
proporcione una cabecera apropiada a cada columna.

SELECT job_id,
SUM (DECODE(departament_id,20,salary))
SUM (DECODE(departament_id,50,salary))
SUM (DECODE(departament_id,80,salary))
SUM (DECODE(departament_id,90,salary))
SUM(salary) AS "Salario Total"
FROM employees
GROUP BY job_id;

AS "Departamento
AS "Departamento
AS "Departamento
AS "Departamento

20",
50",
80",
90",

S-ar putea să vă placă și