Resolución 2do. Parcial de Base de Datos I – Tema 1 Dadas las

Anuncio
Resolución 2do. Parcial de Base de Datos I – Tema 1
Dadas las siguientes relaciones:
CLIENTE ( codcli, nombre, apellido, domicilio, localidad, provincia )
RECLAMO ( nroreclamo, codcli, codoper, fecharec, fechasol, codtec, motivo, comentario, nrorecant )
OPERADOR ( codoper, nombre, apellido )
TECNICO ( codtec, nombre, apellido, categoría )
Aclaraciones: Los clientes hacen recalmos cuando tienen algún problema con el servicio prestado.
Los atiende un operador telefónico que lo asigna a un técnico. Cuando lo soluciona se ingresa la fecha de solución (fechasol) y el
comentario. Si el cliente reitera un reclamo anterior que supuestamente estaba solucionado, se indica el número de reclamo previo en el
atributo nrorecant.
Cuando se reitera un reclamo simpre se hace referencia al previo, no al original.
Por ejemplo si el reclamo 1 se reitera con el número 10, y luego debe reiterarse nuevamente con el número 20, el reclamo 20 hará
referencia al reclamo anterior 10, que hará referencia al reclamo anterior 1. NUNCA va a decir que el 20 hace referencia al 1.
Resolver en A.R:
1.- Listar el número de reclamo original y el nombre y apellido del cliente, cuando el reclamo se haya reiterado al menos 3 veces en
menos de 15 días.
R1=ⱷ FECHASOL>’’ RECLAMO
R2=R1
R3=R1
π R1.NroReclamo, Nombre, Apellido { CLIENTE |X| π R1.NroReclamo, R1.CodCli [ⱷ R3.FechaRec-R1.FechaRec<15 (
R3
|X|
(
R3.NroRecAnt=R2.NroReclamo
R2
|X|
R1
))]}
R2.NroRecAnt=R1.NroReclamo
Resolver en SQL
2.- Listar el nombre y apellido del técnico que haya solucionado más reclamos en el año 2013.
CREATE VIEW RecxTec AS (SELECT CodTec, Count(*) as Cant FROM Reclamo WHERE FechaSol>=’20130101’and
FechaSol<=’20131231’ GROUP BY CodTec )
SELECT Nombre, Apellido FROM Tecnico WHERE CodTec IN ( SELECT CodTec FROM RecxTec WHERE Cant = ANY ( SELECT
MAX(Cant) FROM RecxTec ) )
Resolución 2do. Parcial de Base de Datos I – Tema 2
Dadas las siguientes relaciones:
CLIENTE ( codcli, nombre, apellido, domicilio, localidad, provincia )
RECLAMO ( nroreclamo, codcli, codoper, fecharec, fechasol, codtec, motivo, comentario, nrorecant )
OPERADOR ( codoper, nombre, apellido )
TECNICO ( codtec, nombre, apellido, categoría )
Aclaraciones: Los clientes hacen recalmos cuando tienen algún problema con el servicio prestado.
Los atiende un operador telefónico que lo asigna a un técnico. Cuando lo soluciona se ingresa la fecha de solución (fechasol) y el
comentario. Si el cliente reitera un reclamo anterior que supuestamente estaba solucionado, se indica el número de reclamo previo en el
atributo nrorecant.
Cuando se reitera un reclamo simpre se hace referencia al previo, no al original.
Por ejemplo si el reclamo 1 se reitera con el número 10, y luego debe reiterarse nuevamente con el número 20, el reclamo 20 hará
referencia al reclamo anterior 10, que hará referencia al reclamo anterior 1. NUNCA va a decir que el 20 hace referencia al 1.
Resolver en A.R:
1.- Listar el nombre y apellido de los técnicos que dieron por resuelto un reclamo y su reiteración, pero luego se reiteró nuevamente y fue
solucionado por otro técnico.
R1=ⱷ FECHASOL>’’ RECLAMO
R2=R1
R3=R1
π Nombre, Apellido { TECNICO |X| π R1.CodTec [
R3
|X|
R3.NroRecAnt=R2.NroReclamo
^ R3.CodTec<>R1.CodTec
(
R2
|X|
R1
) ]}
R2.NroRecAnt=R1.NroReclamo
^ R2.CodTec=R1.CodTec
Resolver en SQL
2.- Listar el nombre y apellido del operador que haya tomado menos reclamos en el año 2014.
CREATE VIEW RecxOper AS (SELECT CodOper, Count(*) as Cant FROM Reclamo WHERE FechaRec>=’20140101’and
FechaRec<=’20141231’ GROUP BY CodOper )
SELECT Nombre, Apellido FROM Operador WHERE CodOper IN ( SELECT CodOper FROM RecxOper WHERE Cant = ANY ( SELECT
MIN(Cant) FROM RecxOper ) )
Descargar