
Parcial #1
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:
- Que artículos fueron adquiridos antes del 6 mes del 2012.
- Determinar el articulo que tiene fecha mas antigua de adquisición.
- Seleccionar los artículos que terminan en en (o) y (m).
- Listar los productos que tienen al final consonante.
- Si las fechas de adquisición es en el primer semestre del año, se darán 5 meses para el pago
- 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