Академический Документы
Профессиональный Документы
Культура Документы
Carrera:
CIENCIAS INFORMTICAS
Ao
2012
Materia:
BASE DE DATOS II
Semestre
Quinto
EJERCICIO 4 Sentencias DML
Seccin
ABIQ-Cnel.Ov.
1. Inserte una nueva rea denominada Auditora con el ID igual al ltimo ms 1, que depender del
ID perteneciente a la Gerencia Administrativa.
INSERT INTO B_AREAS
(ID, NOMBRE_AREA, FECHA_CREA, ACTIVA, ID_AREA_SUPERIOR)
SELECT (SELECT MAX(ID)+1 FROM B_AREAS), 'Auditoria', SYSDATE, 'S',
ID FROM B_AREAS WHERE UPPER(NOMBRE_AREA) = 'GERENCIA ADMINISTRATIVA';
NOMBRE
APELLIDO
FECHA_ING
FECHA_NACIM
CEDULA_JEFE
TELEFONO
123566
MARCIO
BALMACEDA
SYSDATE
04/02/1970
La cdula de
Jos Caniza
DIRECCION
BARRIO
3. Salga del plus sin efectuar el commit. Ingrese de vuelta. Verifique las filas. Explique lo que sucedi
(al salir se efecta el commit)
4.
El Seor Ricardo Meza pasa a tener la misma posicin y rea que la Seora Amanda Prez. Realice
el cambio en 2 sentencias:
ACTUALICE la fecha de fin a la actual posicin de Ricardo Meza INSERTE una nueva posicin para el seor Ricardo Meza, con la categora y rea de la Seora
Amanda Prez, y fecha de inicio a partir de hoy.
UPDATE
SET
WHERE
FROM
WHERE
AND
b_posicion_actual
fecha_fin = SYSDATE
cedula = (SELECT cedula
b_empleados
UPPER(nombre) LIKE 'RICARDO%'
UPPER(apellido) LIKE 'MEZA%');
Pg. 1/4
AND
AND
Seccin
ABIQ-Cnel.Ov.
5. Cree la tabla de BONIFICACION (con el script que se proporciona ms abajo) y calcule con una
operacin MERGE, la bonificacin correspondiente a todos los empleados.
En todos los casos, la bonificacin es igual al total de ventas de cada cdula del vendedor, el cual se
calcula sumando el porcentaje de comisin que corresponde a cada artculo sobre el costo de venta de
dicho artculo de las ventas realizadas hasta la fecha.
Cuando el registro de bonificacin ya existe, actualice la bonificacin con el monto calculado
Si no existe, inserte el registro correspondiente.
CREATE TABLE BONIFICACION
(CEDULA_VENDEDOR NUMBER(11),
BONIFICACION NUMBER(10));
MERGE INTO bonificacion B
USING (SELECT CEDULA_VENDEDOR, SUM(D.CANTIDAD * D.PRECIO *
A.PORC_COMISION) BONIFICACION
FROM
B_DETALLE_VENTAS D, B_VENTAS V, B_ARTICULOS A
WHERE V.ID = D.ID_VENTA
AND
A.ID = D.ID_ARTICULO
GROUP BY CEDULA_VENDEDOR) E
ON (B.CEDULA_VENDEDOR = E.CEDULA_VENDEDOR)
WHEN MATCHED THEN
UPDATE SET B.bonificacion = E.BONIFICACION
WHEN NOT MATCHED THEN
INSERT (B.CEDULA_VENDEDOR, B.BONIFICACION)
VALUES (E.CEDULA_VENDEDOR, E.BONIFICACION);
6. Se han rematado todos los artculos que no han tenido ventas ni compras en todo el periodo. Elimine
fsicamente dichos artculos de la BD.
DELETE FROM B_ARTICULOS A
WHERE NOT EXISTS (SELECT 'X' FROM B_DETALLE_VENTAS WHERE ID_ARTICULO =
A.ID)
AND NOT EXISTS (SELECT 'X' FROM B_DETALLE_COMPRAS WHERE ID_ARTICULO =
A.ID);
Pg. 2/4
8.
Seccin
ABIQ-Cnel.Ov.
Inserte en la tabla B_MAYOR de la cuenta 1120200 correspondiente al mes de ENERO de este ao,
a partir de la acumulacin de los datos de los asientos del DIARIO. Tenga en cuente que el id del
mayor es siempre el ltimo nmero +1.
INSERT INTO B_MAYOR
SELECT (SELECT NVL(MAX(ID_MAYOR),0) +1
FROM B_MAYOR) ID,
CODIGO_CTA, ANIO, MES, ACUM_DEBITO, ACUM_CREDITO
FROM
(SELECT D.CODIGO_CTA,
TO_CHAR(C.FECHA,'YYYY') ANIO,
TO_CHAR(C.FECHA,'MM') MES,
SUM(DECODE(D.DEBE_HABER, 'D', D.IMPORTE, 0)) ACUM_DEBITO,
SUM(DECODE(D.DEBE_HABER, 'C', D.IMPORTE, 0)) ACUM_CREDITO
FROM B_DIARIO_DETALLE D JOIN B_DIARIO_CABECERA C
ON
C.ID = D.ID
WHERE D.CODIGO_CTA = 1120200
AND TO_CHAR(C.FECHA,'MM') = '01'
GROUP BY D.CODIGO_CTA, TO_CHAR(C.FECHA,'YYYY'),
TO_CHAR(C.FECHA,'MM')) DIARIO;
9. Una de las posibilidades que ofrece el ORACLE es la de insertar mltiples tablas al mismo tiempo.
Corra los siguientes scripts para crear tablas de VENTAS al contado y crdito.
CREATE TABLE VENTAS_CONTADO2011
(ID_ARTICULO NUMBER(8),
MES
NUMBER(2),
CANTIDAD
NUMBER(6),
TOTAL_VENTA
NUMBER(8));
CREATE TABLE VENTAS_CREDITO2011
(ID_ARTICULO NUMBER(8),
MES
NUMBER(2),
CANTIDAD
NUMBER(6),
TOTAL_VENTA
NUMBER(8));
Aplique INSERT ... WHEN para insertar en una sola sentencia las ventas de ambos tipos a partir las tablas de
VENTAS correspondientes al ao 2011. Atencin: Tipo de venta es CR( crdito) o CO (contado).
INSERT ALL
WHEN (TIPO_VENTA = 'CR') THEN
INTO VENTAS_CREDITO2011
VALUES (ID_ARTICULO, MES, CANTIDAD, TOTAL_VENTA)
WHEN (TIPO_VENTA = 'CO') THEN
INTO VENTAS_CONTADO2011
Pg. 3/4
Seccin
ABIQ-Cnel.Ov.
10. Borre de la BD las categoras salariales que histricamente no han sido asignadas a ningn
funcionario:
DELETE FROM B_CATEGORIAS_SALARIALES C
WHERE NOT EXISTS
(SELECT 'X' FROM B_POSICION_ACTUAL
WHERE COD_CATEGORIA = C.COD_CATEGORIA);
Pg. 4/4