Parcial #1

06.09.2023

Parte #1


Disposición para sub-cadenas:

  • 4 primeros dígitos año 
  • 5 digito numero de semestre 
  • Digito 6 al 9 es el código del carnet 
  • Los 3 últimos dígitos es la carrera 

A. Consulte los discentes que estudian sistemas (075, 088)

Análisis: Mediante el uso de una sub-cadena debemos buscar, en el campo 'carnet', cual de ellos estudian sistemas utilizando los últimos 3 dígitos del mismo campo y verificar cuales terminan en '075' y '088', correspondiente a la carrera de sistemas.

Sintaxis: select * from discente where substr(carnet,-3) in ('075','088'); 


B. Cuente los discentes que están matriculados en ingeniería (075)

Análisis: Mediante el uso de una sub-cadena debemos contar, en el campo 'carnet', cuantos están matriculados a la ingeniería utilizando los últimos 3 dígitos del mismo campo y verificar cuales terminan en 075'.

Sintaxis: select count(*) AS Matriculados_Ingenieria from discente where substr(carnet,-3) in ('075');


C. Consulte los nombres de los discentes cuyos caracteres no excedan de 25

Análisis: Mediante el uso del comando 'LENGTH()' buscaremos que nombres de estudiantes tienen 25 caracteres o menos.

Sintaxis: select nombre from discente where LENGTH(nombre) <= 25;


D. Cuantos discentes no están matriculados en tecnología en sistemas (088)

Análisis: Mediante el uso de una sub-cadena debemos contar, en el campo 'carnet', cuantos no están matriculados a la tecnología en sistemas utilizando los últimos 3 dígitos del mismo campo y verificar cuales son diferentes a '088'.

Sintaxis: select count(*) AS No_Matriculados_TecSistemas from discente where substr(carnet,-3) not in ('088');


E. Cuente los discentes que iniciaron sus estudios en el año 2012.

Análisis: Mediante el uso de una sub-cadena debemos contar, en el campo 'carnet', cuantos iniciaron sus estudios en el año 2012 utilizando los 4 primeros dígitos del mismo campo y verificar cuales son iguales a '2012'.

Sintaxis: select count(*) AS Inciados_Año_2012 from discente where substr(carnet, 1, 4) in ('2012');


F. Cuantos discentes iniciaron sus estudios en el primer semestre del año.

Análisis: Mediante el uso de una sub-cadena debemos contar, en el campo 'carnet', cuantos iniciaron sus estudios en el primer semestre del año utilizando el 5 dígito del mismo campo y verificar cuales son iguales a '1'.

Sintaxis: select count(*) AS Primer_Semestre from discente where substr(carnet, 5, 1) in ('1');


G. Cuente los alumnos que se matricularon antes del 2013

Análisis: Mediante el uso de una sub-cadena debemos contar, en el campo 'carnet', cuantos se matricularon antes del año 2013 utilizando los 4 primeros dígitos del mismo campo y verificar cuales son diferentes a '2013'.

Sintaxis: select count(*) AS Matricula_Antes_2013 from discente where substr(carnet, 1, 4) not in ('2013'); 


H. Ordene los discentes por el año en que se matricularon

Análisis: Mediante el uso de una sub-cadena debemos ordenar, en el campo 'carnet', los discentes por el año en el que matricularon utilizando los 4 primeros dígitos del mismo campo y el comando ORDER BY().

Sintaxis: select * from discente ORDER BY substr(carnet, 1, 4) DESC;


I. Liste los discentes de ingeniería de sistemas que estén matriculados antes del 2012 en el segundo semestre del año

Análisis: Mediante el uso de una sub-cadena debemos buscar, en el campo 'carnet', cual de ellos estudian ingeniería en sistemas utilizando los últimos 3 dígitos del mismo campo y verificar cuales terminan en '075', correspondiente a ingeniería sistemas. Además se deben filtrar por el año en que se matricularon, en este caso antes del '2012', utilizando los 4 primeros dígitos del campo 'carnet' y filtrar además por el semestre en que se matricularon, en este caso el semestre '2', utilizando el 5 dígito de el mismo campo.

Sintaxis: select * from discente where substr(carnet,-3) in ('075') AND substr(carnet, 1, 4) not in ('2012','2013') AND substr(carnet, 5, 1) in ('2');


J. Consulte el carnet menor de los discentes que no son de sistemas (solo incluya el código)

Análisis: Mediante el uso de una sub-cadena debemos buscar, en el campo 'carnet', cual es el carnet con el código menor, utilizando los dígitos del 6 al 9 del mismo, con la condición de que los discentes no pueden ser de la carrera sistemas, verificando que los 3 últimos dígitos del carnet no sean '075' o '088'.

Sintaxis: select MIN(substr(carnet, 6, 4)) AS Carnet_Minimo from discente where substr(carnet,-3) not in ('075', '088');


K. Los carnet terminados en 088 tienen descuento del 5% de lo contrario pagan todo el valor de la matricula

Análisis

  • Utilizamos una expresión CASE para evaluar la condición SUBSTR(carnet, -3) = '088', que verifica si los últimos tres caracteres del carnet son "088".

  • Si la condición es verdadera (es decir, el carnet termina en "088"), se muestra "Pago con descuento (5%)" en la columna "estado_pago".

  • Si la condición es falsa (es decir, el carnet no termina en "088"), se muestra "Pago completo" en la columna "estado_pago".

Sintaxis: 

SELECT carnet, nombre,

CASE

WHEN SUBSTR(carnet, -3) = '088' THEN 'Pago con descuento (5%)'

ELSE 'Pago completo'

END AS estado_pago

FROM discente;


L. Si el carnet termina en 073 el estudiante es de contaduría, de lo contrario es de otra carrera

Análisis:

  • Utilizamos una expresión CASE para evaluar las condiciones que dependen de los últimos tres caracteres del carnet usando SUBSTR(carnet, -3).

  • Cuando los últimos tres caracteres son '073', se asigna 'Contaduría' como la carrera.

  • Cuando los últimos tres caracteres son '075', se asigna 'Ingeniería en Sistemas' como la carrera.

  • Cuando los últimos tres caracteres son '088', se asigna 'Tecnología en Sistemas' como la carrera.

  • Para cualquier otro valor de los últimos tres caracteres, se asigna 'Otra Carrera' como la carrera por defecto.

Sintaxis:

SELECT carnet, nombre,

CASE

WHEN SUBSTR(carnet, -3) = '073' THEN 'Contaduría'

WHEN SUBSTR(carnet, -3) = '075' THEN 'Ingeniería en Sistemas'

WHEN SUBSTR(carnet, -3) = '088' THEN 'Tecnología en Sistemas'

ELSE 'Otra Carrera'

END AS carrera

FROM discente;


M. Liste a todos los estudiantes que pertenecen a la carrera de ingeniería de sistemas, cuyo nombre tengan en cualquier lado la letra 'I'

Análisis

  • Usamos SUBSTR(carnet, -3) = '075' para filtrar solo a los estudiantes cuyos carnets terminan en '075', lo que indica que pertenecen a la carrera de Ingeniería de Sistemas.

  • Usamos nombre LIKE '%I%' para filtrar los nombres que contienen la letra 'I' en cualquier posición.

Sintaxis: select * from discente where substr(carnet,-3) in ('075') AND nombre like '%I%';


Copia Base de Datos

https://remingtonedu-my.sharepoint.com/:u:/r/personal/luis_rendon_6273_miremington_edu_co/Documents/Bases%20de%20Datos/BdPParte%231.sql?csf=1&web=1&e=gufMZA

Parte #2


Realizar: 

  1. Que artículos fueron adquiridos antes del 6 mes del 2012. 
  2. Determinar el articulo que tiene fecha mas antigua de adquisición. 
  3. Seleccionar los artículos que terminan en en (o) y (m). 
  4. Listar los productos que tienen al final consonante. 
  5. Si las fechas de adquisición es en el primer semestre del año, se darán 5 meses para el pago 
  6. Si las fechas de adquisición es en el segundo semestre del año, se darán 8 meses de plazo

Tabla


Que artículos fueron adquiridos antes del 6 mes del 2012.

Análisis: Esta consulta selecciona todos los registros de la tabla "pagos" donde la fecha de adquisición es anterior al 1 de junio de 2012. Esto te dará la lista de artículos que fueron adquiridos antes del sexto mes del 2012.

Sintaxis: select * from pagos wherefechaadquisicion < '2012-06-1';



Determinar el articulo que tiene fecha mas antigua de adquisición. 

Análisis: Esta consulta selecciona el articulo con la fecha mas antigua de la tabla 'pagos' utilizando una condición para verificar donde el campo 'fechaadquisicion' corresponde a una subconsulta utilizando la función MIN() para obtener la fecha mas antigua.

Sintaxis: select * from pagos where fechaadquisicion = (select MIN(fechaadquisicion) from pagos);


Seleccionar los artículos que terminan en en (o) y (m). 

Análisis: En esta consulta, estamos buscando en la columna "descripcion" aquellos registros donde el nombre del artículo contiene "(o)" o "(m)" al final, utilizando el comando LIKE.

Sintaxis:  select * from pagos where descripcion like '%o' OR descripcion like '%m';


Listar los productos que tienen al final consonante 

Análisis: En esta consulta, estamos utilizando la función RIGHT(descripcion, 1) para obtener el último carácter de la columna "descripcion" y luego comprobando si ese carácter no está presente en la lista de vocales en minúsculas y mayúsculas. Se consulta por las vocales ya se acorta mas los caracteres para la condición.

Sintaxis: select * from pagos where RIGHT(descripcion, 1) not in ('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U');


  • Si las fechas de adquisición es en el primer semestre del año, se darán 5 meses de plazo
  • Si las fechas de adquisición es en el segundo semestre del año, se darán 8 meses de plazo 

Análisis: En esta consulta, utilizamos la función MONTH() para obtener el mes de la fecha de adquisición y luego aplicamos una expresión CASE para determinar el plazo según el mes. Si el mes está entre 1 y 6, se asigna un plazo de 5 meses; si no es así, asigna un plazo de 8 meses para el segundo semestre.

Sintaxis:


Copia Base de Datos

https://remingtonedu-my.sharepoint.com/:u:/r/personal/luis_rendon_6273_miremington_edu_co/Documents/Bases%20de%20Datos/BdPParte%232.sql?csf=1&web=1&e=pn7YcS

Parte #3

Importante: La parte #3 del parcial ya esta terminada en la sección Actividad #2 - Bases de Datos 2(Actividades), aquí dejo un acceso directo a dicha sección.


Adjunto aquí mismo las 2 consultas faltantes dentro del reto del parcial Parte #3

  • Mostrar la fecha del sistema. 
  • Visualizar la hora actual del sistema 

El comando NOW() se utiliza para obtener la fecha y la hora actual del sistema en el que se ejecuta la consulta. Proporciona un valor de fecha y hora en el formato predeterminado de la base de datos que estés utilizando. 


Formas normales, Procedimientos almacenados y Triggers

Share
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar