Archivo

Posts Tagged ‘Solutions’

PRACTICO 4 SQL SOLUTION

Práctica Lección 4
Desplegando Datos de Múltiples Tablas

1.- Escriba una consulta que despliegue el apellido, número 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 están en el departamento 80. Incluir la localización 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, localización y ciudad de todos los empleados que ganan comisión

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” minúscula 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, número 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 número del empleado con el apellido de su administrador y número 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;
Categorías:SQL Etiquetas: , ,

PRACTICO 3 SQL SOLUTION

diciembre 6, 2008 1 comentario

Práctica 3
Funciones sobre Filas

1.- Para cada empleado, desplegar el apellido, y calcular el número de meses entre la fecha actual y la fecha de contrato. Etiquetar la columna como “MESES TRABAJADOS”. Ordenar la consulta por el número de meses trabajados. Redondear el número de meses hasta el entero más 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 SOÑADO”

SELECT last_name || ' recibe ' ||  salary || ' mensualmente, pero quiere recibir ' || salary *3 AS "SALARIO SOÑADO"
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 comodín $ 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 revisión de salario, con el primer lunes después 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 día de la semana en que el empleado inicio su empleo. Etiquetar la columna como “DIA”.Ordena el resultado por el día 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 comisión. Si el empleado no gana comisión, desplegar “Sin Comisión” Etiquetar la columna como COMM

SELECT last_name, NVL(TO_CHAR(commission_pct),'Sin Comisión') 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 dólares. 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 función 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 continuación:

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 cláusula 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;
Categorías:SQL Etiquetas: , ,

PRACTICO SQL 2 SOLUTION

Práctica Lección 2
Restringiendo y ordenando datos

1.- Crear una consulta que despliegue el last name y salary de los empleados que ganan más 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 &gt; 12000;

2.- Crear una consulta que despliegue el last_name del empleado y department number para cada número 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 alfabéticamente 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 están 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 año 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 comisión para todos los empleados cuya comisión 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;
Categorías:SQL Etiquetas: , ,