0% encontró este documento útil (0 votos)
208 vistas4 páginas

Consultas SQL en Oracle para E-learning

El documento presenta 14 ejercicios sobre JOINs, funciones y otros conceptos de Oracle. Los ejercicios incluyen consultas para obtener datos de empleados, proyectos, suministros, clientes y realizar aumentos salariales. Se usan funciones como NEXT_DAY, LAST_DAY, ROUND, TRUNC y operadores como MINUS e INTERSECT.

Cargado por

Ariel Gauto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
208 vistas4 páginas

Consultas SQL en Oracle para E-learning

El documento presenta 14 ejercicios sobre JOINs, funciones y otros conceptos de Oracle. Los ejercicios incluyen consultas para obtener datos de empleados, proyectos, suministros, clientes y realizar aumentos salariales. Se usan funciones como NEXT_DAY, LAST_DAY, ROUND, TRUNC y operadores como MINUS e INTERSECT.

Cargado por

Ariel Gauto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Manual de ORACLE E-learning

Ver presentacin 04 para interiorizarse acerca de los JOINS y las Funciones.


Prctica N 4 - JOINS y FUNCIONES
1. Seleccione el nombre y apellido de aquellos empleados que gerencian proyectos que iniciaron
en el ao 2014. Incluya adems la identificacin, el objetivo del proyecto, la fecha de inicio y el
costo. La consulta debe ir ordenada por fecha
SELECT [Link] "Codigo Empleado", [Link] "Nombre del empleado", [Link] "Apellido del
empleado",
[Link] "Identificador de proyecto", [Link] "Objetivo del proyecto",f.fecha_inicio "Fecha de
inicio",
[Link] "Costo"
FROM p_personal p, p_proyecto f
WHERE [Link] = f.id_gerente_proyecto and f.fecha_inicio BETWEEN '01-01-2011' AND '31-122011'
ORDER BY f.fecha_inicio
/
2. Obtenga el id, nombre y apellido del personal, id y descripcin del departamento al que
pertenece. Ejercite los siguientes casos:

1. Es necesario que salgan todos los departamentos an cuando no tenga


empleados asignados a l.
SELECT [Link], [Link], [Link], [Link]
FROM p_personal e RIGHT OUTER JOIN
p_departamento d
ON [Link] = e.id_departamento
ORDER BY [Link]
/

2. Es necesario que salgan todos los empleados aun cuando no hayan sido
asignados a un departamento
SELECT [Link], [Link], [Link], [Link]
FROM p_personal e LEFT OUTER JOIN
p_departamento d
ON [Link] = e.id_departamento
Order by [Link]

/
3. Es necesario que salga la lista completa del personal y todos los
departamentos
SELECT [Link], [Link], [Link], [Link]
FROM p_personal e FULL OUTER JOIN
p_departamento d
ON [Link] = e.id_departamento
Order by [Link]
/
3. Para el proyecto de gestin documental, necesitamos conocer la disponibilidad (inventario) del
producto ESCANER (cualquier tipo de escner) en todas las localidades.
Imprima el nombre de la localidad, el id del suministro, la descripcin del suministro, el costo,
la cantidad en stock.
SELECT [Link] "Nombre de la localidad", [Link] "Id del suministro",
[Link] "Descripcion del suministro", [Link], i.stock_actual "Cantidad en Stock"

Instructora: Zulma Anglica Argello Matas

Pgina 1

Manual de ORACLE E-learning


FROM p_localidad l, p_suministro s, p_inventario i
WHERE [Link] LIKE '%ESCANER%'
/
4. Por una nueva disposicin, todos los artculos de reproduccin digital y accesorios debern ser
grabados, incrementado el costo al 13%. Simule el aumento del costo de los DISCOS de
cualquier tamao y marca. Para facilitar las transacciones, redondee el resultado a la centena
ms cercana. Ordene el resultado por Descripcin.
Grabe la consulta como costo_incr.sql
El listado debe lucir as:
Id
Descripcin

Costo

Costo Incrementado

SELECT id, descripcion, costo, ROUND(((costo*0.13)+costo),-2) as "Costo Incrementado"


FROM p_suministro
WHERE descripcion LIKE '%DISCOS%'
ORDER BY descripcion
/
5. Se debe aumentar el salario en un 15% al personal bajo las siguientes condiciones:
- Los que tengan una antigedad mayor o igual a 10 aos (con respecto a la fecha de ingreso)
- Los que tengan un salario menor al salario mnimo (Actualmente de gs. 1.658.200)
- Tenga adems en cuenta que el salario incrementado debe redondearse a miles para evitar
inconvenientes con el cambio.
Ordene la consulta por la diferencia de incremento
La lista simulando el incremento debe lucir as:
ID
Nombre y Apellido Antigedad
Salario Actual
Salario Incrementado
Diferencia
SELECT id, nombre||apellido "Nombre y Apellido",
ROUND (months_between(sysdate, fecha_inicio)/12)Antiguedad,
salario, ROUND ((salario * 1.15), -3) salario_incrementado,
ROUND (salario * 1.15, -3) - salario Diferencia
FROM p_personal
WHERE salario < 1658200
OR months_between (sysdate, fecha_inicio) >= 120
ORDER BY diferencia DESC
/
6. En base a la calificacin del crdito del cliente se calcular el porcentaje que le corresponde a
cada personal sobre el monto de los proyectos que tiene con ese cliente. Se proceder de acuerdo
al siguiente cuadro:
Calificacin del Cliente
% a asignar
EXCELENTE
15
MUY BUENO
10
BUENO
8
REGULAR
3
MALO
1
Liste el nombre y apellido o razn del cliente, el nombre y apellido del empleado, y el
porcentaje que le va a corresponder. Pruebe con DECODE y CASE.
SELECT c.nombre_cliente, c.apellido_razon, c.califica_credito,

Instructora: Zulma Anglica Argello Matas

Pgina 2

Manual de ORACLE E-learning


c.id_representante,
[Link],
[Link],
[Link],
(c.califica_credito,'MALO',0.01*[Link],
'REGULAR',0.03*[Link],'BUENO',0.08*[Link],'MUY
BUENO',0.10*[Link],'EXCELENTE',0.15*[Link]) porcentaje_personal
FROM p_personal p, p_cliente c, p_proyecto y
/

DECODE

SELECT c.nombre_cliente, c.apellido_razon, c.califica_credito,


c.id_representante, [Link], [Link], [Link],
CASE califica_credito
WHEN 'MALO'THEN 0.01*[Link]
WHEN'REGULAR'THEN 0.03*[Link]
WHEN 'BUENO'THEN 0.08*[Link]
WHEN 'MUY BUENO'THEN 0.10*[Link]
WHEN 'EXCELENTE'THEN 0.15*[Link]
END porcentaje_personal
FROM p_personal p, p_cliente c, p_proyecto y
/
7. Considerando la fecha de hoy, indique cundo caer el prximo SBADO.
SELECT NEXT_DAY(SYSDATE, 6) FROM DUAL;
8. Suponiendo que estamos el 1 de febrero del 2012, utilice la funcin LAST_DAY para determinar
si este ao es bisiesto o no. Con CASE y con DECODE, haga aparecer la expresin bisiesto
o no bisiesto segn corresponda.
SELECT CASE to_number(to_char(last_day('01/feb/12'),'dd'))
WHEN 29 THEN 'Bisiesto'
ELSE 'No Bisiesto'
END as Fecha
FROM DUAL;
SELECT DECODE( (to_char(last_day('01/feb/12'),'dd')), 29, 'Bisiesto', 'No Bisiesto') Fecha
FROM DUAL;
9. Tomando en cuenta la fecha de hoy, verifique que fecha dar redondeando al ao? Y truncando
al ao? Escriba el resultado. Pruebe lo mismo suponiendo que sea el 1 de Julio del ao. Pruebe
tambin el 12 de marzo.
SELECT ROUND(SYSDATE,'yyyy') FROM DUAL;
Resultado: 01/01/12
SELECT TRUNC(SYSDATE,'yyyy') FROM DUAL;
Resultado: 01/01/11
SELECT ROUND(to_date('01/jul/2011'),'yyyy') FROM DUAL;
Resultado: 01/01/12
SELECT TRUNC(to_date('01/jul/2011'),'yyyy') FROM DUAL;
Resultado: 01/01/11
SELECT ROUND(to_date('12/mar/2011'),'yyyy') FROM DUAL;
Resultado: 01/01/11

Instructora: Zulma Anglica Argello Matas

Pgina 3

Manual de ORACLE E-learning


SELECT TRUNC(to_date('12/mar/2011'),'yyyy') FROM DUAL;
Resultado: 01/01/11

10. Imprima su edad en aos y meses. Ejemplo: Si naci el 23/abril/1972, tendra 39 aos y 3 al 13
de Agosto del 2011.
Nac el 13/01/80. Tengo 31 aos 7 meses. La fecha del ejercicio fue: 14/08/2011.
SELECT TRUNC(MONTHS_BETWEEEN(SYSDATE,'13/ene/80')/12) AS Aos,
TRUNC(MOD(TO_NUMBER(MONTHS_BETWEEN(SYSDATE,'13/ene/80')),12)) as Meses
FROM DUAL;
Resultado: Aos Meses
31
7
11. Determine la fecha y hora del sistema en el formato apropiado.
SELECT CURRENT_TIMESTAMP FROM DUAL;
12. Liste id, Nombre y apellido de todos los empleados QUE NO ESTN incluidos en el
cronograma de algn proyecto. Utilice el MINUS.
SELECT id, nombre, apellido
from p_personal
MINUS
SELECT a.id_personal, [Link], [Link]
FROM p_personal_asignado a, p_personal p
WHERE [Link] = a.id_personal
/
13. Liste id, Nombre y apellido de todos los empleados QUE ESTN incluidos en el cronograma
de un proyecto a travs de la INTERSECCIN.
SELECT id, nombre, apellido
from p_personal
INTERSECT
SELECT a.id_personal, [Link], [Link]
FROM p_personal_asignado a, p_personal p
WHERE [Link] = a.id_personal
/
14. Ejercicios propuestos
1. Necesitamos conocer los suministros por departamentos y localidades.
2. Considerando la fecha de hoy, indique cundo caer el prximo LUNES.

3. Es necesario conocer todos los datos de los clientes.


4. Liste id, Nombre y apellido de todos los Clinetes ESTN incluidos en el
cronograma de algn proyecto. Utilice el MINUS.
5. Realice un reajuste salarial a todos los empleados considerando un seguro
mdico del 9%. Indique el salario neto a cobrar. Visualice el cambio.

Instructora: Zulma Anglica Argello Matas

Pgina 4

También podría gustarte