Archivo

Posts Tagged ‘SQL’

PRACTICO 6 SQL SOLUTION

Práctica 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 número del empleado y su apellido de aquellos empleados que ganan más que el salario promedio. Ordenar ascendentemente por salario

SELECT employee_id, last_name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees)
ORDER BY salary ASC;

3.- escribir una consulta que despliegue el número 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, número de departamento e identificador del cargo de todos los empleados cuya localización 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 número 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 número del empleado, apellido y salario de todos aquellos empleados que ganan más 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 > (SELECT AVG(salary) FROM employees);
Categorías:SQL Etiquetas: , ,

PRACTICO 5 SQL SOLUTION

Práctica 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 cálculos (V)(F)
F
3.- La cláusula WHERE restringe filas antes de la inclusión en un cálculo de funciones de grupo (V)(F)
V
4.- Desplegar el salario máximo, mínimo, sumatoria, y promedio de todos los trabajadores. Etiquetar Máximo, Mínimo, Sumatoria, Promedio respectivamente. Redondear los resultados al entero más próximo. 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 máximo, mínimo, 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 número de trabajadores con el mismo cargo.

SELECT COUNT(*)
FROM employees
GROUP BY job_id;

7.- Determinar el número de administradores sin ellos en el listado. Etiquetar la columna como “Número de Administradores”

SELECT COUNT(DISTINCT manager_id) AS "Número de Administradores"
FROM employees;

8.- Escribir una consulta que despliegue la diferencia entre el salario máximo y mínimo. 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 mínimo 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) > 6000
ORDER BY MIN(salary) DESC;

10.- Escribir una consulta que despliegue para cada departamento, nombre, número de empleados y salario promedio para todos los empleados del departamento. Etiquetar las columnas como: Nombre, Localización, 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 número 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 número 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;
Categorías:SQL Etiquetas: , ,

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: , ,

SQL Designer Online

Encontre esto y me parecio interesante, es para el diseño SQl  , algo asi como oracle designer , pero totalmente online =D,  creo que nos será de mucha ayuda para testear algunas cosas en Base de datos.

Les dejo el Link http://ondras.zarovi.cz/sql/demo/?keyword=default

Categorías:SQL Etiquetas: , ,
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 27 seguidores