You are on page 1of 13

UNIVERSIDAD INTERAMERICANA DE PUERTO RICO

RECINTO METROPOLITANO
FACULTAD DE CIENCIAS Y TECNOLOGA
PROGRAMA GRADUADO EN SISTEMAS ABIERTOS DE INFORMACIN
SAN JUAN, PUERTO RICO

BANCO DE DATOS RELACIONALES CURSO: COIS 5100


TRIMESTRE: NOVIEMBRE A FEBRERO 2017
DR. CARLOS A. DAZ APONTE
PROFESOR

LABORATORIO III

JOS A. NIEVES SANTIAGO


31 DICIEMBRE 2016
DEPARTAMENTO DE CIENCIAS DE COMPUTADORAS Y MATEMTICAS
PROGRAMA GRADUADO EN SISTEMAS ABIERTOS DE INFORMACIN

BANCO DE DATOS RELACIONALES CURSO


CURSO: COIS 5100
DR. CARLOS A. DAZ APONTE
PROFESOR

LABORATORIO III
Banco de Datos Summit

Instrucciones:

1. Realice las siguientes consultas usando el banco de datos Summit.

2. Guarde las consultas en un solo archivo de Word donde identifique con REM cada ejercicio y
presente la captura o resultado de la ejecucin.

Valor Total : 40 puntos


3 puntos cada uno

1. Listar el nombre de los productos que han ordenado los clientes del vendedor con apellido 'Magee'
o del vendedor 'Giljum ' . (Haga la consulta de manera tal que no resulte invlida por que sea sensitiva
a la forma en que estn los datos).

SELECT P.NAME, E.FIRST_NAME||' '|| E.LAST_NAME AS SALES_REP_NAME FROM S_EMP E


INNER JOIN S_ORD O
ON (E.ID = O.SALES_REP_ID)
INNER JOIN S_ITEM L
ON (L.ORD_ID = O.ID)
INNER JOIN S_PRODUCT P
ON (P.ID = L.PRODUCT_ID)
WHERE UPPER (E.LAST_NAME)=UPPER('MAGEE')
OR UPPER (E.LAST_NAME)= UPPER ('GILJUM');
2. Listar el nombre de los productos que han ordenado los clientes del vendedor con apellido 'Magee'
y del vendedor 'Giljum ' . (Haga la consulta de manera tal que no resulte invlida por que sea sensitiva
a la forma en que estn los datos) .

SELECT P.NAME, E.FIRST_NAME||' '|| E.LAST_NAME AS SALES_REP_NAME FROM S_EMP E


INNER JOIN S_ORD Y
ON (E.ID = Y. SALES_REP_ID)
INNER JOIN S_ITEM L
ON (L.ORD_ID = Y.ID)
INNER JOIN S_PRODUCT P
ON (P.ID = L.PRODUCT_ID)
WHERE UPPER (E.LAST_NAME)=UPPER('MAGEE')
3. Listar el nombre de los productos que han ordenado los clientes del vendedor con apellido
'Magee', pero no del vendedor 'Giljum ' . (Haga la consulta de manera tal que no resulte invlida por
que sea sensitiva a la forma en que estn los datos).
SELECT P.NAME, e.FIRST_NAME||' '|| E.LAST_NAME AS SALES_REP_NAME FROM S_EMP e
INNER JOIN S_ORD o
ON (e.ID = o.SALES_REP_ID)
INNER JOIN S_ITEM l
ON (l.ord_id = o.id)
INNER JOIN s_product P
ON (P.id = l.product_id)
WHERE UPPER (E.last_name)=UPPER('MAGEE');
4. Listar los nombres de los clientes y la regin cuando el apellido del vendedor tiene por lo menos 6
letras o no tiene vendedor asignado.

SELECT c.name, e.last_name as SALES_REP_LAST_NAME,r.name as REGION_NAME


FROM s_emp e
RIGHT JOIN s_customer c
ON(c.SALES_REP_ID=e.ID AND (LENGTH(e.LAST_NAME)>=6) or c.SALES_REP_ID=NULL)
INNER JOIN s_region r
ON(r.ID=c.REGION_ID);

5. Listar los nombres de los departamentos contando la cantidad de empleados en cada departamento
cuando en el departamento hay ms de tres empleados.

SELECT d.name AS "DEPARTMENT NAME", COUNT(*) AS "EMPLOYEE QTY"


FROM s_emp e INNER JOIN s_dept d ON e.dept_id = d.id
GROUP BY d.name
HAVING COUNT(*)>3;
6. Listar los nombres de los departamentos contando la cantidad de empleados en cada departamento
cuando el sueldo promedio de los empleados del departamento es menor a $1100.

SELECT d.NAME AS "DEPARTMENT_NAME" ,count(*) AS "EMPLOYEE QTY"


FROM s_emp e
INNER JOIN s_dept d
ON e.DEPT_ID = d.ID
WHERE salary < 1100
GROUP BY d.name;

7. Listar la regin y los nombres de los clientes cuando el nombre del cliente tiene las letras 'sport' en
el nombre de ste. (Haga la consulta de manera tal que no resulte invlida por que sea sensitiva a la
forma en que estn los datos. Adems, el nombre de la regin no debe ocupar ms de 12 caracteres y
si tiene menos rellenar con *, tambin el nombre del cliente en la salida debe ocupar a lo ms 10
caracteres y debe rellenar con =.

SELECT RPAD (r.NAME,12,'*') AS REGION_NAME, RPAD (SUBSTR (c.NAME,1,10),10,'=') AS


CUSTOMER
FROM s_customer c LEFT JOIN S_REGION r ON c.REGION_ID=r.ID
WHERE UPPER (c.NAME) LIKE '%SPORT%';
8. Listar la fecha en que comenz el empleado, el apellido y su nombre si se incorporaron a la
compaa desde el 4 de marzo de 1990 hasta el 14 de mayo de 1990, inclusive. La fecha debe tener
un formato que no sea sencillo, por ejemplo 4-mar-1990 4/mar/1990, debe aparecer el nombre
completo de mes. Y ordene la salida por fecha.

SELECT s_emp.LAST_NAME, s_emp.FIRST_NAME,


TO_CHAR(s_emp.START_DATE, 'DD-MONTH-YYYY')
FROM s_emp
WHERE s_emp.START_DATE BETWEEN to_date('04/MAR/1990', 'DD-MONTH-YYYY') AND
to_date('14-MAY-1990', 'DD-MONTH-YYYY')
ORDER BY s_emp.START_DATE;

9. Listar el id del vendedor que atiende clientes de todas las regiones.

SELECT DISTINCT (E.ID) AS "ID del Vendedor General"


FROM S_EMP E,S_CUSTOMER C, S_DEPT D
WHERE E.ID= C. SALES_REP_ID AND E.DEPT_ID = D.ID AND D.REGION_ID <> C. REGION_ID;

10. Listar el id y nombre completo del vendedor que atiende clientes de todas las regiones.

SELECT DISTINCT (E.ID) AS VENDOR_ID,(e.first_name||''||e.last_name) AS VENDOR_NAME


FROM s_emp e, s_customer c, s_dept d
WHERE e.id = c.sales_rep_id
AND e.dept_id = d.ID
AND d.region_id<>c.region_id;
10 puntos

11. Construya un ejemplo no dado en la clase y que no est en las lecciones del curso, donde
demuestre:
La diferencia entre los outer join (Full, Right, Left).1

LEFT JOIN

SELECT e.ID, c.NAME, E.LAST_NAME


FROM S_CUSTOMER c
LEFT JOIN S_EMP E
ON (c.SALES_REP_ID=E.ID);

RIGHT JOIN

SELECT e.ID, c.NAME, E.LAST_NAME


FROM S_CUSTOMER c
RIGHT JOIN S_EMP E
ON(c.SALES_REP_ID=E.ID);

1
https://www.tutorialspoint.com/sql/sql-using-joins.htm
FULL JOIN

SELECT e.ID, c.NAME, E.LAST_NAME


FROM S_CUSTOMER c
LEFT JOIN S_EMP E
ON (c.SALES_REP_ID=E.ID)
UNION ALL
SELECT e.ID, c.NAME, E.LAST_NAME
FROM S_CUSTOMER c
RIGHT JOIN S_EMP E
ON(c.SALES_REP_ID=E.ID);
El uso del divide

SELECT e.FIRST_NAME||' '||e.LAST_NAME AS "EMPLOYEE NAME", e.SALARY/365 AS "SALARY


PER DAY" TO CHART
FROM S_EMP e;
EMPLOYEE NAME SALARY PER DAY
Carmen Velasquez 6.85
LaDoris Ngao 3.97
Midori Nagayama 3.84
Mark Quick-To-See 3.97
Audry Ropeburn 4.25
Molly Urguhart 3.29
Roberta Menchu 3.42
Ben Biri 3.01
Antoinette Catchpole 3.56
Marta Havel 3.58
Colin Magee 3.84
Henry Giljum 4.08
Yasmin Sedeghi 4.15
Mai Nguyen 4.18
Andre Dumas 3.97
Elena Maduro 3.84
George Smith 2.58
Akira Nozaki 3.29
Vikram Patel 2.18
Chad Newman 2.05
Alexander Markarian 2.33
Eddie Chang 2.19
Radha Patel 2.18
Bela Dancs 2.36
Sylvie Schwartz 3.01