COMPARTE ESTE ARTÍCULO

¿Te gustaría repasar algunas sentencias de SQL de forma amena para entender mejor cómo funcionan las tablas, las uniones y ciertos cálculos dentro de una base de datos? ¡Sigue leyendo! A continuación, encontrarás un pequeño repaso –en forma de historias y ejemplos– que te ayudará a practicar. (Pss… Incluye de manera camuflada varias ideas que, sin duda, te servirán cuando trabajes con bases de datos similares).


1. Conociendo a Nuestros Alumnos y sus Localidades

Imagina que tienes un listado de estudiantes y quieres saber en qué localidad vive cada uno. Una posible forma de ligar estos datos es combinando la tabla de alumnos con la de localidades usando la clave común:

SELECT a.DNI,
       a.Nombre,
       l.NomLocalidad
FROM   alumnos AS a
       JOIN localidades AS l ON a.Localidad = l.CodLocalidad;

Idea: Esto te muestra los estudiantes junto con el nombre del lugar donde residen.


2. Localidades Sin Estudiantes

¿Te has preguntado qué lugares, en tu base de datos, aún no tienen ningún habitante (o alumno) asociado?
Para averiguarlo, podrías buscar aquellas localidades cuyos códigos no aparezcan en la tabla de alumnos:

SELECT l.CodLocalidad,
       l.NomLocalidad
FROM   localidades AS l
WHERE  l.CodLocalidad NOT IN (
         SELECT a.Localidad FROM alumnos AS a
       );

Idea: Con esta técnica, identificas lugares sin presencia de estudiantes.


3. Cuántos Alumnos Hay por Nivel de Estudios

Supongamos que tienes distintos niveles de estudios (Secundaria, Bachillerato, Universitario, etc.). Para contar cuántos alumnos hay en cada nivel, podrías usar:

SELECT a.NivelEstudios,
       COUNT(*) AS CantAlumnos
FROM   alumnos AS a
GROUP BY a.NivelEstudios;

Idea: Así, sabrás cuántos estudiantes corresponden a cada nivel académico.


4. El Nivel de Estudio con Más Alumnos

¿Quieres resaltar solo aquel nivel de estudios que concentra la mayor cantidad de estudiantes? Podrías aplicar algo como esto:

SELECT TOP 1 a.NivelEstudios,
             COUNT(*) AS CantAlumnos
FROM   alumnos AS a
GROUP BY a.NivelEstudios
ORDER BY CantAlumnos DESC;

Idea: De un vistazo, localizas el nivel de estudios con más presencia de alumnos.


5. Niveles de Estudio con Más de 1 Alumno

Ahora, si te interesara filtrar únicamente los niveles que superan un cierto número de matriculados (en este caso, mayor a 1):

SELECT a.NivelEstudios,
       COUNT(*) AS CantAlumnos
FROM   alumnos AS a
GROUP BY a.NivelEstudios
HAVING COUNT(*) > 1;

Idea: De esa forma, descartas niveles con 1 o 0 estudiantes.


6. Alumnos Solo de los Niveles 11 y 22

Tal vez hay niveles que te interesan específicamente, por ejemplo los códigos 11 y 22.
Filtrarlos es tan sencillo como:

SELECT a.NivelEstudios,
       COUNT(*) AS CantAlumnos
FROM   alumnos AS a
WHERE  a.NivelEstudios IN ('11','22')
GROUP BY a.NivelEstudios;

Idea: A veces, solo necesitas centrar la atención en ciertos códigos concretos.


7. Alumnos de los Niveles 11 y 22 que Tengan Más de 1 Alumno

Si, además de elegir los niveles 11 y 22, quieres quedarte únicamente con los que superen un cierto mínimo de personas (por ejemplo, 1):

SELECT a.NivelEstudios,
       COUNT(*) AS CantAlumnos
FROM   alumnos AS a
WHERE  a.NivelEstudios IN ('11','22')
GROUP BY a.NivelEstudios
HAVING COUNT(*) > 1;

Idea: Combinas un WHERE para restringir niveles y un HAVING para establecer el mínimo requerido.


8. Localidades con Más de 2 Alumnos Cuyos Nombres Empiecen por T, S o B

¿Te planteas buscar lugares con determinada inicial y cierto número de población estudiantil? Podrías hacerlo así:

SELECT l.NomLocalidad,
       COUNT(a.DNI) AS NumAlumnos
FROM   alumnos AS a
       JOIN localidades AS l ON a.Localidad = l.CodLocalidad
WHERE  l.NomLocalidad LIKE 'T%' 
       OR l.NomLocalidad LIKE 'S%' 
       OR l.NomLocalidad LIKE 'B%'
GROUP BY l.NomLocalidad
HAVING COUNT(a.DNI) > 2;

Idea: Ideal para filtrar por la primera letra de la localidad y contar su alumnado.


9. Alumnos Matriculados en un Módulo con Código X o Y (Incluyendo Notas)

Para cierto(s) módulo(s), quizá quieras ver quién está apuntado y con qué calificación:

SELECT ma.dni,
       a.Nombre,
       ma.notas
FROM   ModulosAlumnos AS ma
       JOIN alumnos AS a ON ma.dni = a.DNI
WHERE  ma.modulo IN (X, Y);

Idea: Esto sirve para listar a los alumnos inscritos en dos módulos específicos.


10. Igual al Anterior pero Solo los Aprobados

Si consideramos que la nota de aprobación es mayor o igual a 5:

SELECT ma.dni,
       a.Nombre,
       ma.notas
FROM   ModulosAlumnos AS ma
       JOIN alumnos AS a ON ma.dni = a.DNI
WHERE  ma.modulo IN (X, Y)
  AND  ma.notas >= 5;

Idea: Así filtras exclusivamente a quienes han logrado o superado la nota de corte.


11. DNI, Nombre y Nota Media de Cada Alumno en Todos sus Módulos

Para calcular el promedio de notas por alumno, podríamos agrupar por DNI y hacer la media:

SELECT a.DNI,
       a.Nombre,
       AVG(ma.notas) AS NotaMedia
FROM   ModulosAlumnos AS ma
       JOIN alumnos AS a ON ma.dni = a.DNI
GROUP BY a.DNI, a.Nombre;

Idea: Obtienes el promedio de calificaciones para cada estudiante.


12. Promedio pero Solo de los Módulos X e Y

Si deseas filtrar la media para módulos concretos:

SELECT a.DNI,
       a.Nombre,
       AVG(ma.notas) AS NotaMedia
FROM   ModulosAlumnos AS ma
       JOIN alumnos AS a ON ma.dni = a.DNI
WHERE  ma.modulo IN (X, Y)
GROUP BY a.DNI, a.Nombre;

Idea: Útil para centrarse en determinados módulos.


13. Nota Media de Cada Alumno en Sus Módulos del Curso Pasado

Imagina que guardaste matrículas por año (ej. 2021, 2022, etc.). En muchas bases de datos, podrías filtrar por la fecha de matrícula:

SELECT a.DNI,
       a.Nombre,
       AVG(ma.notas) AS NotaMedia
FROM   ModulosAlumnos AS ma
       JOIN alumnos AS a ON ma.dni = a.DNI
WHERE  YEAR(ma.fechaMatricula) = 2021  -- ejemplo de "curso pasado"
GROUP BY a.DNI, a.Nombre;

Idea: Ajusta el año según qué “curso” consideres “pasado”.


14. Nota Media (Solo Módulos X e Y) Igual o Mayor a 5

Para alumnos que tengan en promedio igual o superior a 5, podrías usar HAVING:

SELECT a.DNI,
       a.Nombre,
       AVG(ma.notas) AS NotaMedia
FROM   ModulosAlumnos AS ma
       JOIN alumnos AS a ON ma.dni = a.DNI
WHERE  ma.modulo IN (X, Y)
GROUP BY a.DNI, a.Nombre
HAVING AVG(ma.notas) >= 5;

Idea: Combinas filtro de módulos y mínima nota media aprobatoria.


15. Módulos Sin Ningún Alumno Matriculado

Si deseas detectar aquellos módulos sin estudiantes, podrías hacer:

SELECT m.codmodulo,
       m.NomModulo
FROM   modulos AS m
WHERE  m.codmodulo NOT IN (
         SELECT ma.modulo FROM ModulosAlumnos AS ma
       );

Idea: Identifica asignaturas o módulos en los que aún no se ha matriculado nadie.


(Más Retos y Prácticas con Subconsultas)

A veces, para consultas más avanzadas, necesitarás ideas como:

  1. Calcular la nota media de un alumno (con DNI específico) y compararla con la de otros.
  2. Mostrar el promedio de cada alumno y filtrar aquellos que superen la media de un compañero concreto.
  3. Comparar la nota media de distintos módulos con la de un módulo específico, etc.

Aquí te dejo, muy por encima, algunas instrucciones que podrían inspirarte para practicar subconsultas. Úsalas como guía de estudio:

  • Nota media de un alumno con un DNI concreto.
  • Lista de alumnos con su promedio de notas.
  • Solo aquellos que tienen una media mayor que la media de un alumno específico.
  • Comparar la media de un módulo con la de otro módulo y así sucesivamente.
  • Buscar el módulo con más alumnos y filtrar solo a los matriculados allí.
  • Hallar el alumno con menos asignaturas y listar sus módulos.
  • Consultar a qué alumnos no les supera ninguna nota por encima de 5.
  • Averiguar quién se matriculó en todos los módulos de la escuela.
  • O descubrir a los estudiantes que han cursado más módulos que la media de módulos por alumno.
  • Incluso, ver en qué asignaturas todas las notas son mayores que cierta nota concreta en el módulo de “Fol”.

Existen multitud de técnicas y cada pregunta te reta a pensar en WHERE, GROUP BY, HAVING, uniones entre tablas y subconsultas. ¡Eso te hará dominar la lógica de consultas y tener un mejor entendimiento de la base de datos!


Conclusión:
Este conjunto de “escenarios” (cada uno con sus pequeñas sentencias) funciona como un repaso global para comprobar cómo manejar datos relacionados con estudiantes, módulos, calificaciones y localidades. Cada consulta te servirá como base para cuestiones reales: desde listar información básica hasta calcular promedios, filtrar aprobados o buscar niveles de estudio con gran asistencia.

¡Sigue practicando, combinando y adaptando cada idea a tus necesidades! Recuerda que la clave está en comprender el porqué de cada parte de la consulta para que puedas reutilizar esas “fórmulas” en cualquier otro proyecto de bases de datos.

Tip Extra: Para un estudio más profundo, prueba a cambiar las condiciones (los “=”, “>”, “<”, “LIKE”, etc.) y date cuenta de cómo se modifica la salida. Esto te ayudará a entender mejor el motor SQL y a ser más ágil en tus desarrollos.

Contenido restringido

Acceso de usuarios existentes
   
Registro de un nuevo usuario
*Campo necesario

Categories:

Tags:

Comments are closed

Estado de acceso
ESTADO DE ACCESO
TRADUCTORES
COMPARTENOS
error: CONTENIDO PROTEGIDO