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 ) )