Taller 2
PARTE DE CADENAS
SOLUCION
a. Consulte los discentes que estudian sistemas (075, 088)
¿Qué desea mostrar?
El listado completo de estudiantes que pertenecen a las carreras de Sistemas, identificados por los códigos 075 y 088 en los últimos 3 dígitos de su carnet.
Los campos a mostrar son:
Carnet (identificación del estudiante)
Nombre (nombre completo del discente)
Tablas involucradas
Discente: Contiene toda la información de los estudiantes
Relaciones
No se requieren relaciones con otras tablas para esta consulta
Funciones a utilizar
SUBSTR():
IN:
SELECT:
WHERE:
Código SQL
select count(*) as Estudiantes from Discente where substr(carnet,10,3) in ('075', '088');
b. Cuente los discentes que est�n matriculados en ingenier�a (075)
¿Qué desea mostrar?
El número total de estudiantes matriculados en carreras de Ingeniería, identificados por el código 075 en los últimos 3 dígitos del carnet.
Campo a mostrar:
Ingeniería (conteo total de estudiantes).
Tablas involucradas:
Discente (contiene los registros de estudiantes).
Relaciones:
No se requieren relaciones con otras tablas.
Funciones utilizadas:
COUNT(*):
SUBSTR():
IN:
Código SQL:
select count(*) as Ingenieria from DISCENTE where substr(carnet,10,3) in ('075');
c. Consulte los nombres de los discentes cuyos caracteres no excedan de 25.
¿Qué deseamos mostrar?
Los nombres completos de los estudiantes cuya longitud no exceda los 25 caracteres.
Campo a mostrar:
nombre (nombre completo del discente).
Tabla involucrada
Discente (contiene los registros de estudiantes).
Relaciones
No se requieren relaciones con otras tables.
Funciones utilizadas
CHARACTER_LENGTH():
WHERE:
SELECT:
Código SQL
select nombre from discente where character_length(nombre) < 25;
d. Cuantos discentes no est�n matriculados en tecnolog�a en sistemas.
¿Qué deseamos mostrar?
El número total de estudiantes que NO están matriculados en Tecnología en Sistemas (código 088).
Campo a mostrar:
Conteo total de discentes no matriculados en Tecnología en Sistemas
Tabla involucrada:
Discente (contiene los registros de estudiantes)
Relaciones:
No se requieren relaciones con otras tablas
Funciones utilizadas:
COUNT(*):
SUBSTR():
NOT IN:
WHERE:
Código SQL:
SELECT COUNT(*) AS No_Tecnologia_Sistemas
FROM Discente
WHERE SUBSTR(carnet, 10, 3) NOT IN ('088');
e. Cuente los discentes que iniciaron sus estudios en el a�o 2012.
¿Qué deseamos mostrar?
El número total de estudiantes que comenzaron sus estudios en el año 2012, identificados por los primeros dígitos de su carnet.
Tabla involucrada:
Discente (tabla principal con registros de estudiantes).
Relaciones:
No se requieren relaciones con otras tablas.
Funciones utilizadas:
SUBSTR():
COUNT():
WHERE:
Código SQL:
SELECT COUNT(*) AS Comenzaron_2012
FROM Discente
WHERE SUBSTR(carnet, 1, 4) = '2012';
f. Cuantos discentes iniciaron sus estudios en el primer semestre del a�o.
¿Qué deseamos mostrar?
El número total de estudiantes que comenzaron sus estudios en el primer semestre de cualquier año, identificados por el quinto dígito de su carnet.
Campo a mostrar:
Total_primer_semestre (conteo de estudiantes del primer semestre)
Tabla involucrada:
Discente (tabla principal con registros de estudiantes)
Relaciones:
No se requieren relaciones con otras tablas
Funciones utilizadas:
SUBSTR():
COUNT():
WHERE:
Código SQL:
SELECT COUNT(*) AS Total_primer_semestre
FROM Discente
WHERE SUBSTR(carnet, 5, 1) = '1';
g. cuente los alumnos que se matricularon antes del 2013.+++++++++++++++++++++++++++++++
¿Qué deseamos mostrar?
El número total de estudiantes que iniciaron sus estudios antes del año 2013, identificados por los primeros dígitos de su carnet.
Campo a mostrar:
Total_antes_2013 (conteo de estudiantes matriculados antes de 2013).
Tabla involucrada:
Discente (tabla principal de estudiantes).
Relaciones:
No se requieren relaciones con otras tablas.
Funciones utilizadas:
SUBSTR():
COUNT():
WHERE:
Código SQL:
SELECT COUNT(*) AS Total_antes_2013
FROM Discente
WHERE SUBSTR(carnet, 1, 4) < '2013';
h. Ordene los discentes por el a�o en que se matricularon.++++++++++++++
¿Qué deseamos mostrar?
El listado completo de estudiantes ordenados cronológicamente según su año de matrícula, mostrando su información básica.
Campos a mostrar:
carnet
nombre
año_matricula
Tabla involucrada:
Discente
Relaciones:
No se requieren relaciones con otras tablas.
Funciones utilizadas:
SUBSTR():
ORDER BY:
SELECT:
Código SQL:
SELECT carnet, nombre, SUBSTR(carnet, 1, 4) AS año_matricula -- Opcional: muestra el año extraídoFROM DiscenteORDER BY SUBSTR(carnet, 1, 4); -- Ordena por año ascendente (más antiguo a más reciente)
i. Liste los discentes de ingenier�a de sistemas que est�n matriculados antes del 2012 en el segundo semestre del a�o.+++++++++++++++++++++++++++++++++++++++++++
¿Qué deseamos mostrar?
El listado de estudiantes de Ingeniería de Sistemas que cumplen:
Matriculados antes de 2012
Ingresaron en segundo semestre
Ordenados por año de matrícula
Campos a mostrar:
carnet
nombre
Tabla involucrada:
Discente
Relaciones:
No se requieren relaciones con otras tablas
Funciones utilizadas:
SUBSTR():
WHERE:
ORDER BY:
Código SQL:
SELECT carnet, nombre
FROM Discente
WHERE SUBSTR(carnet, 10, 3) = '075'
AND SUBSTR(carnet, 1, 4) < '2012'
AND SUBSTR(carnet, 5, 1) = '2'
ORDER BY SUBSTR(carnet, 1, 4);
j. Consulte el carnet menor de los discentes que no son de sistemas (solo incluya el codigo)++++++++++++++++++++++++++
¿Qué deseamos mostrar?
El número de carnet con el valor más bajo (menor numéricamente) entre los estudiantes que no pertenecen a carreras de Sistemas (excluyendo códigos 075 y 088).
Campo a mostrar:
MIN(carnet)
Tabla involucrada:
Discente
Relaciones:
No se requieren relaciones con otras tablas.
Funciones utilizadas:
MIN():
SUBSTR():
NOT IN:
WHERE:
Código SQL:
SELECT MIN(carnet)
FROM Discente
WHERE SUBSTR(carnet, 10, 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.++++++++++++++++
¿Qué deseamos mostrar?
El valor de matrícula que debe pagar cada estudiante, aplicando:
5% de descuento si su carnet termina en 088 (Tecnología en Sistemas)
Valor completo para todos los demás casos
Campos a mostrar:
carnet
nombre
valor_a_pagar
Tabla involucrada:
Discente (tabla principal de estudiantes)
Relaciones:
No se requieren relaciones con otras tablas.
Funciones utilizadas:
SUBSTR():
CASE WHEN THEN ELSE END:
Calcula el 95% del valor original (5% de descuento)
Código SQL:
SELECT
carnet,
nombre,
CASE
WHEN SUBSTR(carnet, 10, 3) = '088' THEN 500000 * 0.95 -- Valor fijo con descuento
ELSE 500000 -- Valor fijo sin descuento
END AS valor_a_pagar
FROM Discente;
l. Si el carnet termina en 073 el estudiante es de contadur�a, de lo contrario es de otra carrera a fin.
El siguiente listado de estudiantes que cumplen las condiciones:
Son de la carrera de Contaduría ( segúnen el carnet )(según el código '073'en el carnet)
Ingresaron en el primer semestreen la posición 5 del carnet )(según el carácter '1'en la posición 5 del carnet)
Ordenados por año de matrícula ( primeros 4 dígitos del carnet )(primeros 4 dígitos del carnet)
Campos para mostrar:carnet(identificación del estudiante)
nombre(nombre completo)
carnet(identificación del estudiante)
nombre(nombre completo)
Tabla involucrada:Discente
Discente
Relaciones:No se requieren relaciones con otras tablas
No se requieren relaciones con otras tablas
Funciones utilizadas:SUBSTR():
SUBSTR(carnet, 10, 3)para extraer el código de la carrera
SUBSTR(carnet, 5, 1)para extraer el semestre de ingreso
SUBSTR(carnet, 1, 4)para extraer el año de matrícula (y ordenar)
WHERE: Para aplicar condiciones de carrera y semestre
ORDER BY: Para ordenar los resultados por año de matrícula
SUBSTR():
SUBSTR(carnet, 10, 3)para extraer el código de la carrera
SUBSTR(carnet, 5, 1)para extraer el semestre de ingreso
SUBSTR(carnet, 1, 4)para extraer el año de matrícula (y ordenar)
WHERE: Para aplicar condiciones de carrera y semestre
ORDER BY: Para ordenar los resultados por año de matrícula
Código SQL:
SELECT carnet, nombre FROM DiscenteWHERE SUBSTR(carnet, 10, 3) = '073' -- Código de Contaduría AND SUBSTR(carnet, 5, 1) = '1' -- Primer semestreORDER BY SUBSTR(carnet, 1, 4); -- Ordenados por año de matrícula
TXT