SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Universidad Nacional de Asunción – Facultad Politécnica
Carrera: CIENCIAS INFORMÁTICAS Año 2012
Materia: BASE DE DATOS II Semestre Quinto Sección A-B-I
EJERCICIO 2 JOINS y FUNCIONES
1. Obtenga la lista de empleados con su posición y salario vigente (El salario y la categoría
vigente tienen la fecha fin nula – Un solo salario está vigente en un momento dado). Debe
listar:
Nombre área, Apellido y nombre del empleado, Fecha Ingreso, categoría, salario actual
La lista debe ir ordenada por nombre de área, y por apellido del funcionario.
select A.NOMBRE_AREA, E.APELLIDO||', '||E.NOMBRE "APELLIDO Y NOMBRE",
E.FECHA_ING,
P.COD_CATEGORIA, S.ASIGNACION
FROM B_POSICION_ACTUAL P, B_AREAS A, B_EMPLEADOS E,
B_CATEGORIAS_SALARIALES S
WHERE A.ID = P.ID_AREA
AND E.CEDULA = P.CEDULA
AND S.COD_CATEGORIA = P.COD_CATEGORIA
AND S.FECHA_FIN IS NULL
AND P.FECHA_FIN IS NULL
ORDER BY 1, 2
/
2. Liste el libro DIARIO correspondiente al mes de enero del año 2012, tomando en cuenta la
cabecera y el detalle. Debe listar los siguientes datos:
ID_Asiento, Fecha, Concepto, Nro.Linea, código cuenta, nombre cuenta, Monto débito,
Monto crédito (haga aparecer el monto del crédito o débito según el valor del campo
débito_crédito – D ó C)
SELECT C.ID ID_ASIENTO, C.CONCEPTO, C.FECHA,D.NRO_LINEA,
D.CODIGO_CTA, M.NOMBRE_CTA, DECODE(D.DEBE_HABER, 'D', IMPORTE, 0) DEBITO,
DECODE(D.DEBE_HABER, 'C', IMPORTE, 0) CREDITO
FROM B_DIARIO_DETALLE D, B_DIARIO_CABECERA C, B_CUENTAS M
WHERE C.FECHA BETWEEN TO_DATE('01012012','DDMMYYYY') AND
TO_DATE('31012012','DDMMYYYY')
AND D.ID = C.ID
AND M.CODIGO_CTA = D.CODIGO_CTA;
3. Algunos empleados de la empresa son también clientes. Obtenga dicha lista a través de una
operación de intersección. Liste cédula, nombre y apellido, teléfono. Tenga en cuenta sólo a
las personas físicas (F) que tengan cédula. Recuerde que los tipos de datos para operaciones
del álgebra relacional tienen que ser los mismos.
SELECT LPAD(P.CEDULA,15,0) CEDULA, P.APELLIDO, P.NOMBRE, P.TELEFONO
FROM B_PERSONAS P
WHERE ES_CLIENTE = 'S'
AND P.CEDULA IS NOT NULL
AND P.TIPO_PERSONA = 'F'
INTERSECT
SELECT LPAD(TO_CHAR(E.CEDULA), 15,0) CEDULA, E.APELLIDO, E.NOMBRE,
E.TELEFONO
FROM B_EMPLEADOS E;
4. Se pretende realizar el aumento salarial del 5% para todas las categorías. Debe listar la
categoría (código y nombre), el importe actual, el importe aumentado al 5% (redondeando la
cifra a la centena), y la diferencia.
Formatee la salida para que los montos tengan los puntos de mil.
COLUMN ASIGNACION FORMAT 99G999G999
COLUMN AUMENTADO FORMAT 99G999G999
COLUMN DIFERENCIA FORMAT 99G999G999
SELECT COD_CATEGORIA, NOMBRE_CAT, ASIGNACION,
ROUND(ASIGNACION*1.05, -2) AUMENTADO, ROUND(ASIGNACION*1.05, -2) -
ASIGNACION DIFERENCIA
FROM B_CATEGORIAS_SALARIALES;
1/4
Universidad Nacional de Asunción – Facultad Politécnica
Carrera: CIENCIAS INFORMÁTICAS Año 2012
Materia: BASE DE DATOS II Semestre Quinto Sección A-B-I
EJERCICIO 2 JOINS y FUNCIONES
5. Se necesita tener la lista completa de personas (independientemente de su tipo), ordenando
por nombre de localidad. Si la persona no tiene asignada una localidad, también debe
aparecer. Liste Nombre de Localidad, Nombre y apellido de la persona, dirección, teléfono
SELECT L.NOMBRE, P.NOMBRE||', '||P.APELLIDO "NOMBRE Y APELLIDO",
P.DIRECCION,
P.TELEFONO
FROM B_PERSONAS P, B_LOCALIDAD L
WHERE L.ID (+) = P.ID_LOCALIDAD;
O bien
SELECT L.NOMBRE, P.NOMBRE||', '||P.APELLIDO "NOMBRE Y APELLIDO",
P.DIRECCION,
P.TELEFONO
FROM B_PERSONAS P LEFT OUTER JOIN B_LOCALIDAD L
ON L.ID = P.ID_LOCALIDAD;
6. En base a la consulta anterior, liste todas las localidades, independientemente que existan
personas en dicha localidad:
SELECT L.NOMBRE, P.NOMBRE||', '||P.APELLIDO "NOMBRE Y APELLIDO",
P.DIRECCION,
P.TELEFONO
FROM B_PERSONAS P, B_LOCALIDAD L
WHERE L.ID = P.ID_LOCALIDAD (+);
O bien
SELECT L.NOMBRE, P.NOMBRE||', '||P.APELLIDO "NOMBRE Y APELLIDO",
P.DIRECCION,
P.TELEFONO
FROM B_PERSONAS P RIGHT OUTER JOIN B_LOCALIDAD L
ON L.ID = P.ID_LOCALIDAD;
7. Obtenga la misma lista del ejercicio 5, pero asegurándose de listar todas las personas,
independientemente que estén asociadas a una localidad, y todas las localidades, aún cuando
no tengan personas asociadas:
SELECT L.NOMBRE, P.NOMBRE||', '||P.APELLIDO "NOMBRE Y APELLIDO",
P.DIRECCION,
P.TELEFONO
FROM B_PERSONAS P FULL OUTER JOIN B_LOCALIDAD L
ON L.ID = P.ID_LOCALIDAD;
8. Considerando la fecha de hoy, indique cuándo caerá el próximo DOMINGO.
SELECT NEXT_DAY (SYSDATE, 'DOMINGO') FROM dual
/
9. Suponiendo que estamos el 1 de Febrero del 2012, utilice la función LAST_DAY para
determinar si este año es bisiesto o no. Con CASE y con DECODE, haga aparecer la
expresión ‘bisiesto’ o ‘no bisiesto’ según corresponda. Pruebe con el 1 de Febrero del 2014.
SELECT DECODE(TO_CHAR(LAST_DAY(TO_DATE('01-02-2012','DD-MM-YYYY')),
'DD'),
29, 'BISIESTO', 'NO BISIESTO')
ES_BISIESTO FROM DUAL;
SELECT
2/4
Universidad Nacional de Asunción – Facultad Politécnica
Carrera: CIENCIAS INFORMÁTICAS Año 2012
Materia: BASE DE DATOS II Semestre Quinto Sección A-B-I
EJERCICIO 2 JOINS y FUNCIONES
CASE TO_CHAR(LAST_DAY(TO_DATE('01-02-2012','DD-MM-YYYY')), 'DD')
WHEN '29' THEN 'BISIESTO'
ELSE 'NO BISIESTO'
END ES_BISIESTO
FROM DUAL;
10. Tomando en cuenta la fecha de hoy, verifique que fecha dará redondeando al año? Y
truncando al año? Escriba el resultado. Pruebe lo mismo suponiendo que sea el 1 de Julio del
año. Pruebe también el 12 de marzo.
SELECT ROUND(SYSDATE, 'YYYY') AÑO FROM DUAL;
SELECT TRUNC(SYSDATE, 'YYYY') AÑO FROM DUAL;
SELECT ROUND(TO_DATE('01-07-2012','DD-MM-YYYY'),'YYYY') AÑO FROM DUAL;
SELECT TRUNC(TO_DATE('01-07-2012','DD-MM-YYYY'),'YYYY') AÑO FROM DUAL;
SELECT ROUND(TO_DATE('12-03-2012','DD-MM-YYYY'),'YYYY') AÑO FROM DUAL;
SELECT TRUNC(TO_DATE('12-03-2012','DD-MM-YYYY'),'YYYY') AÑO FROM DUAL;
11. Imprima su edad en años y meses. Ejemplo: Si nació el 23/abril/1972, tendría 39 años y 9
meses a la fecha.
SELECT TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('23/04/1972',
'DD/MM/YYYY')) /12,0) || 'años y '
|| TRUNC(MOD(MONTHS_BETWEEN(SYSDATE, TO_DATE('23/04/1972',
'DD/MM/YYYY')), 12),0) || ' meses' Edad
FROM DUAL;
12. Determine la fecha y hora del sistema en el formato apropiado.
SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS') FROM DUAL;
13. Liste ID y NOMBRE de todos los artículos que no están incluidos en ninguna VENTA. Debe
utilizar necesariamente la sentencia MINUS.
SELECT ID, NOMBRE
FROM B_ARTICULOS
MINUS
SELECT
V.ID_ARTICULO, A.NOMBRE
FROM B_DETALLE_VENTAS V, B_ARTICULOS A
WHERE A.ID = V.ID_ARTICULO;
14. La organización ha decidido mantener un registro único de todas las personas, sean éstas
proveedores, clientes y/o empleados. Para el efecto se le pide una operación de UNION entre
las tablas de B_PERSONAS y B_EMPLEADOS. Debe listar
CEDULA, APELLIDO, NOMBRE, DIRECCION, TELEFONO, FECHA_NACIMIENTO.
En la tabla PERSONAS tenga únicamente en cuenta las personas de tipo FISICAS (F) y
que tengan cédula. Ordene la consulta por apellido y nombre
SELECT LPAD(P.CEDULA,15,0) CEDULA , APELLIDO, NOMBRE, DIRECCION,
TELEFONO
FROM B_PERSONAS P
WHERE P.TIPO_PERSONA = 'F'
AND P.CEDULA IS NOT NULL
UNION
SELECT LPAD(TO_CHAR(CEDULA), 15,0) , APELLIDO, NOMBRE, DIRECCION,
TELEFONO
FROM B_EMPLEADOS;
3/4
Universidad Nacional de Asunción – Facultad Politécnica
Carrera: CIENCIAS INFORMÁTICAS Año 2012
Materia: BASE DE DATOS II Semestre Quinto Sección A-B-I
EJERCICIO 2 JOINS y FUNCIONES
4/4

Weitere ähnliche Inhalte

Ähnlich wie Bd2 ejer02 joins y funciones_solucion

Ähnlich wie Bd2 ejer02 joins y funciones_solucion (7)

Dokumen.site ejercicios resueltos-sqlpdf
Dokumen.site ejercicios resueltos-sqlpdfDokumen.site ejercicios resueltos-sqlpdf
Dokumen.site ejercicios resueltos-sqlpdf
 
Sistemas De Bases De Datos Tarea Querys De Sql
Sistemas De Bases De Datos   Tarea Querys De SqlSistemas De Bases De Datos   Tarea Querys De Sql
Sistemas De Bases De Datos Tarea Querys De Sql
 
Sistemas De Bases De Datos-Tarea Querys De Sql
Sistemas De Bases De Datos-Tarea Querys De SqlSistemas De Bases De Datos-Tarea Querys De Sql
Sistemas De Bases De Datos-Tarea Querys De Sql
 
Guia lab5
Guia lab5Guia lab5
Guia lab5
 
pdf-guia-ejercicios-sql-1pdf_compress.pdf
pdf-guia-ejercicios-sql-1pdf_compress.pdfpdf-guia-ejercicios-sql-1pdf_compress.pdf
pdf-guia-ejercicios-sql-1pdf_compress.pdf
 
Unidad 3: Herencia Ejercicio 3
Unidad 3: Herencia Ejercicio 3Unidad 3: Herencia Ejercicio 3
Unidad 3: Herencia Ejercicio 3
 
Relaciones
RelacionesRelaciones
Relaciones
 

Mehr von Rody Paredes (7)

Bdii 26 distribuidas
Bdii 26 distribuidasBdii 26 distribuidas
Bdii 26 distribuidas
 
Bdii 06 func_grupo_y_subconsultas
Bdii 06 func_grupo_y_subconsultasBdii 06 func_grupo_y_subconsultas
Bdii 06 func_grupo_y_subconsultas
 
Bdii 09 ddl_new
Bdii 09 ddl_newBdii 09 ddl_new
Bdii 09 ddl_new
 
Bdii 10 vistas_new
Bdii 10 vistas_newBdii 10 vistas_new
Bdii 10 vistas_new
 
Bdii 04 sql
Bdii 04 sqlBdii 04 sql
Bdii 04 sql
 
Macros
MacrosMacros
Macros
 
Factura automática
Factura automáticaFactura automática
Factura automática
 

Kürzlich hochgeladen

MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptxMÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
CristianCastro978067
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
JC Díaz Herrera
 

Kürzlich hochgeladen (20)

Qué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaQué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problema
 
Panorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOPanorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATO
 
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
 
Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024
 
Cesar Vilchis Vieyra Cesar Vilchis Vieyra
Cesar Vilchis Vieyra  Cesar Vilchis VieyraCesar Vilchis Vieyra  Cesar Vilchis Vieyra
Cesar Vilchis Vieyra Cesar Vilchis Vieyra
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
 
presentacion de conjuntos para primaria.ppt
presentacion de conjuntos para primaria.pptpresentacion de conjuntos para primaria.ppt
presentacion de conjuntos para primaria.ppt
 
Posiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdfPosiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdf
 
COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .
 
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdfReservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
 
Presentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfPresentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdf
 
Posiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfPosiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdf
 
Familias_más_ricas_de_AL_en_la_historia.pdf
Familias_más_ricas_de_AL_en_la_historia.pdfFamilias_más_ricas_de_AL_en_la_historia.pdf
Familias_más_ricas_de_AL_en_la_historia.pdf
 
Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdf
 
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfPosiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
 
Los primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfLos primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdf
 
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptxMÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
MÍNIMO COMÚN MÚLTIPLO, MÁXIMO COMÚN DIVISOR.pptx
 
Las mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfLas mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdf
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
 
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfIndustria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
 

Bd2 ejer02 joins y funciones_solucion

  • 1. Universidad Nacional de Asunción – Facultad Politécnica Carrera: CIENCIAS INFORMÁTICAS Año 2012 Materia: BASE DE DATOS II Semestre Quinto Sección A-B-I EJERCICIO 2 JOINS y FUNCIONES 1. Obtenga la lista de empleados con su posición y salario vigente (El salario y la categoría vigente tienen la fecha fin nula – Un solo salario está vigente en un momento dado). Debe listar: Nombre área, Apellido y nombre del empleado, Fecha Ingreso, categoría, salario actual La lista debe ir ordenada por nombre de área, y por apellido del funcionario. select A.NOMBRE_AREA, E.APELLIDO||', '||E.NOMBRE "APELLIDO Y NOMBRE", E.FECHA_ING, P.COD_CATEGORIA, S.ASIGNACION FROM B_POSICION_ACTUAL P, B_AREAS A, B_EMPLEADOS E, B_CATEGORIAS_SALARIALES S WHERE A.ID = P.ID_AREA AND E.CEDULA = P.CEDULA AND S.COD_CATEGORIA = P.COD_CATEGORIA AND S.FECHA_FIN IS NULL AND P.FECHA_FIN IS NULL ORDER BY 1, 2 / 2. Liste el libro DIARIO correspondiente al mes de enero del año 2012, tomando en cuenta la cabecera y el detalle. Debe listar los siguientes datos: ID_Asiento, Fecha, Concepto, Nro.Linea, código cuenta, nombre cuenta, Monto débito, Monto crédito (haga aparecer el monto del crédito o débito según el valor del campo débito_crédito – D ó C) SELECT C.ID ID_ASIENTO, C.CONCEPTO, C.FECHA,D.NRO_LINEA, D.CODIGO_CTA, M.NOMBRE_CTA, DECODE(D.DEBE_HABER, 'D', IMPORTE, 0) DEBITO, DECODE(D.DEBE_HABER, 'C', IMPORTE, 0) CREDITO FROM B_DIARIO_DETALLE D, B_DIARIO_CABECERA C, B_CUENTAS M WHERE C.FECHA BETWEEN TO_DATE('01012012','DDMMYYYY') AND TO_DATE('31012012','DDMMYYYY') AND D.ID = C.ID AND M.CODIGO_CTA = D.CODIGO_CTA; 3. Algunos empleados de la empresa son también clientes. Obtenga dicha lista a través de una operación de intersección. Liste cédula, nombre y apellido, teléfono. Tenga en cuenta sólo a las personas físicas (F) que tengan cédula. Recuerde que los tipos de datos para operaciones del álgebra relacional tienen que ser los mismos. SELECT LPAD(P.CEDULA,15,0) CEDULA, P.APELLIDO, P.NOMBRE, P.TELEFONO FROM B_PERSONAS P WHERE ES_CLIENTE = 'S' AND P.CEDULA IS NOT NULL AND P.TIPO_PERSONA = 'F' INTERSECT SELECT LPAD(TO_CHAR(E.CEDULA), 15,0) CEDULA, E.APELLIDO, E.NOMBRE, E.TELEFONO FROM B_EMPLEADOS E; 4. Se pretende realizar el aumento salarial del 5% para todas las categorías. Debe listar la categoría (código y nombre), el importe actual, el importe aumentado al 5% (redondeando la cifra a la centena), y la diferencia. Formatee la salida para que los montos tengan los puntos de mil. COLUMN ASIGNACION FORMAT 99G999G999 COLUMN AUMENTADO FORMAT 99G999G999 COLUMN DIFERENCIA FORMAT 99G999G999 SELECT COD_CATEGORIA, NOMBRE_CAT, ASIGNACION, ROUND(ASIGNACION*1.05, -2) AUMENTADO, ROUND(ASIGNACION*1.05, -2) - ASIGNACION DIFERENCIA FROM B_CATEGORIAS_SALARIALES; 1/4
  • 2. Universidad Nacional de Asunción – Facultad Politécnica Carrera: CIENCIAS INFORMÁTICAS Año 2012 Materia: BASE DE DATOS II Semestre Quinto Sección A-B-I EJERCICIO 2 JOINS y FUNCIONES 5. Se necesita tener la lista completa de personas (independientemente de su tipo), ordenando por nombre de localidad. Si la persona no tiene asignada una localidad, también debe aparecer. Liste Nombre de Localidad, Nombre y apellido de la persona, dirección, teléfono SELECT L.NOMBRE, P.NOMBRE||', '||P.APELLIDO "NOMBRE Y APELLIDO", P.DIRECCION, P.TELEFONO FROM B_PERSONAS P, B_LOCALIDAD L WHERE L.ID (+) = P.ID_LOCALIDAD; O bien SELECT L.NOMBRE, P.NOMBRE||', '||P.APELLIDO "NOMBRE Y APELLIDO", P.DIRECCION, P.TELEFONO FROM B_PERSONAS P LEFT OUTER JOIN B_LOCALIDAD L ON L.ID = P.ID_LOCALIDAD; 6. En base a la consulta anterior, liste todas las localidades, independientemente que existan personas en dicha localidad: SELECT L.NOMBRE, P.NOMBRE||', '||P.APELLIDO "NOMBRE Y APELLIDO", P.DIRECCION, P.TELEFONO FROM B_PERSONAS P, B_LOCALIDAD L WHERE L.ID = P.ID_LOCALIDAD (+); O bien SELECT L.NOMBRE, P.NOMBRE||', '||P.APELLIDO "NOMBRE Y APELLIDO", P.DIRECCION, P.TELEFONO FROM B_PERSONAS P RIGHT OUTER JOIN B_LOCALIDAD L ON L.ID = P.ID_LOCALIDAD; 7. Obtenga la misma lista del ejercicio 5, pero asegurándose de listar todas las personas, independientemente que estén asociadas a una localidad, y todas las localidades, aún cuando no tengan personas asociadas: SELECT L.NOMBRE, P.NOMBRE||', '||P.APELLIDO "NOMBRE Y APELLIDO", P.DIRECCION, P.TELEFONO FROM B_PERSONAS P FULL OUTER JOIN B_LOCALIDAD L ON L.ID = P.ID_LOCALIDAD; 8. Considerando la fecha de hoy, indique cuándo caerá el próximo DOMINGO. SELECT NEXT_DAY (SYSDATE, 'DOMINGO') FROM dual / 9. Suponiendo que estamos el 1 de Febrero del 2012, utilice la función LAST_DAY para determinar si este año es bisiesto o no. Con CASE y con DECODE, haga aparecer la expresión ‘bisiesto’ o ‘no bisiesto’ según corresponda. Pruebe con el 1 de Febrero del 2014. SELECT DECODE(TO_CHAR(LAST_DAY(TO_DATE('01-02-2012','DD-MM-YYYY')), 'DD'), 29, 'BISIESTO', 'NO BISIESTO') ES_BISIESTO FROM DUAL; SELECT 2/4
  • 3. Universidad Nacional de Asunción – Facultad Politécnica Carrera: CIENCIAS INFORMÁTICAS Año 2012 Materia: BASE DE DATOS II Semestre Quinto Sección A-B-I EJERCICIO 2 JOINS y FUNCIONES CASE TO_CHAR(LAST_DAY(TO_DATE('01-02-2012','DD-MM-YYYY')), 'DD') WHEN '29' THEN 'BISIESTO' ELSE 'NO BISIESTO' END ES_BISIESTO FROM DUAL; 10. Tomando en cuenta la fecha de hoy, verifique que fecha dará redondeando al año? Y truncando al año? Escriba el resultado. Pruebe lo mismo suponiendo que sea el 1 de Julio del año. Pruebe también el 12 de marzo. SELECT ROUND(SYSDATE, 'YYYY') AÑO FROM DUAL; SELECT TRUNC(SYSDATE, 'YYYY') AÑO FROM DUAL; SELECT ROUND(TO_DATE('01-07-2012','DD-MM-YYYY'),'YYYY') AÑO FROM DUAL; SELECT TRUNC(TO_DATE('01-07-2012','DD-MM-YYYY'),'YYYY') AÑO FROM DUAL; SELECT ROUND(TO_DATE('12-03-2012','DD-MM-YYYY'),'YYYY') AÑO FROM DUAL; SELECT TRUNC(TO_DATE('12-03-2012','DD-MM-YYYY'),'YYYY') AÑO FROM DUAL; 11. Imprima su edad en años y meses. Ejemplo: Si nació el 23/abril/1972, tendría 39 años y 9 meses a la fecha. SELECT TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('23/04/1972', 'DD/MM/YYYY')) /12,0) || 'años y ' || TRUNC(MOD(MONTHS_BETWEEN(SYSDATE, TO_DATE('23/04/1972', 'DD/MM/YYYY')), 12),0) || ' meses' Edad FROM DUAL; 12. Determine la fecha y hora del sistema en el formato apropiado. SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS') FROM DUAL; 13. Liste ID y NOMBRE de todos los artículos que no están incluidos en ninguna VENTA. Debe utilizar necesariamente la sentencia MINUS. SELECT ID, NOMBRE FROM B_ARTICULOS MINUS SELECT V.ID_ARTICULO, A.NOMBRE FROM B_DETALLE_VENTAS V, B_ARTICULOS A WHERE A.ID = V.ID_ARTICULO; 14. La organización ha decidido mantener un registro único de todas las personas, sean éstas proveedores, clientes y/o empleados. Para el efecto se le pide una operación de UNION entre las tablas de B_PERSONAS y B_EMPLEADOS. Debe listar CEDULA, APELLIDO, NOMBRE, DIRECCION, TELEFONO, FECHA_NACIMIENTO. En la tabla PERSONAS tenga únicamente en cuenta las personas de tipo FISICAS (F) y que tengan cédula. Ordene la consulta por apellido y nombre SELECT LPAD(P.CEDULA,15,0) CEDULA , APELLIDO, NOMBRE, DIRECCION, TELEFONO FROM B_PERSONAS P WHERE P.TIPO_PERSONA = 'F' AND P.CEDULA IS NOT NULL UNION SELECT LPAD(TO_CHAR(CEDULA), 15,0) , APELLIDO, NOMBRE, DIRECCION, TELEFONO FROM B_EMPLEADOS; 3/4
  • 4. Universidad Nacional de Asunción – Facultad Politécnica Carrera: CIENCIAS INFORMÁTICAS Año 2012 Materia: BASE DE DATOS II Semestre Quinto Sección A-B-I EJERCICIO 2 JOINS y FUNCIONES 4/4