Comparativa técnica entre Azure MI Failover Group y SQL Server Always On para alta disponibilidad en entornos críticos.
SQL contra el Apocalipsis Mutante (Parte 3): El último asalto
Aprende SQL avanzado con funciones de ventana, CTE recursivas y CUBE para liderar la resistencia en el apocalipsis mutante.
SQL contra el Apocalipsis Mutante (Parte 2): Calcula antes de que te devoren
El humo aún se eleva sobre los refugios que visitamos en el primer capítulo. Algunos apenas aguantan con lo puesto; otros se preparan para resistir. Entre tablas, SELECTs y JOINs empezamos a entender quién tenía posibilidades y quién estaba condenado.
Si te acabas de unir a esta misión y todavía no has completado la Parte 1, detente: no hay gloria para los que intentan correr antes de aprender a caminar. Empieza aquí: SQL contra el Apocalipsis Mutante (Parte 1) y vuelve cuando hayas sobrevivido al primer asalto.
Para quienes seguís con nosotros: bienvenidos al siguiente nivel. Hoy dejaremos atrás los SELECT básicos y nos adentraremos en los cálculos, clasificaciones y agrupaciones. Porque en el apocalipsis, no basta con saber quién está mal; hace falta saber cuán mal están, agrupar por gravedad y priorizar qué hacer antes de que el caos sea total.
Recuerda el escenario: SurvivalDB
Trabajamos sobre la base de datos SurvivalDB, con estas tablas clave:
- RefugeSupplies: inventario de suministros y armas de cada refugio.
- SurvivorStats: población e infectados.
- MutantSightings: registros de avistamientos mutantes.
- EvacuationRoutes: rutas de evacuación posibles entre refugios.

Ejercicios: el análisis que separa la vida de la muerte
Lo fácil ya se ha acabado, hemos sobrevivido al primer dia pero aun queda mucho que hacer. Vamos a incrementar la dificultad y a trabajar con agrupaciones y operaciones matemáticas en SQL Server.
Ejercicio 1: Calcula la tasa de infección
A simple vista, los refugios parecen estar resistiendo, pero las infecciones avanzan como un cáncer. Queremos saber qué porcentaje de cada refugio está infectado, para encontrar los que superen el 5% y actuar antes de que el pánico los destruya por dentro.
Tu misión: calcula la tasa de infección de cada refugio con dos decimales, muestra RefugeID, Population, Infected y InfectionRate, y ordena por mayor porcentaje.
Pista: deberás hacer un cálculo sobre las columnas y filtrar con un porcentaje.
Ejercicio 2: Clasifica refugios según estado crítico
Los datos de suministros muestran diferencias brutales: algunos refugios están bien; otros al borde del abismo. Queremos etiquetar cada refugio como ‘CRITICAL’ u ‘OK’ según si tienen menos de 10 raciones de comida o menos de 50 litros de agua.
Tu misión: muestra RefugeID, FoodRations, WaterLiters y Status (la etiqueta calculada).
Pista: usa una expresión condicional para devolver un texto según la situación.
Ejercicio 3: Cuenta refugios por estado
Ahora que podemos etiquetar cada refugio, necesitamos saber cuántos están en estado ‘CRITICAL’ y cuántos en ‘OK’. Es el primer paso para dimensionar el desastre.
Tu misión: agrupa por el estado y cuenta el número de refugios en cada grupo como RefugeCount.
Pista: agrupa por la misma lógica que usaste para clasificar.
Ejercicio 4: Analiza actividad reciente de mutantes
Los avistamientos se suceden casi a diario. Necesitamos saber cuántos mutantes se han visto cada día en la última semana para anticipar si la actividad aumenta.
Tu misión: cuenta el número de avistamientos por día, mostrando la fecha (SightingDate como DATE) y el total.
Pista: filtra por fecha reciente, agrupa y cuenta.
Ejercicio 5: Mutantes cerca de refugios críticos
Los refugios en estado crítico son vulnerables. Si además tienen hordas mutantes cerca, la probabilidad de caída es altísima. Queremos combinar los refugios en ‘CRITICAL’ con los avistamientos de los últimos 3 días que estén a menos de 0,5 grados de sus coordenadas.
Tu misión: muestra RefugeID, SightingDate, Latitude, Longitude de los avistamientos cercanos.
Pista: une los datos de refugios críticos con los avistamientos recientes y aplica una condición de proximidad.
Consejo para cuando los mutantes golpeen la puerta
No olvides que los cálculos y agregaciones pueden ser tan peligrosos como un mutante si los usas mal: un mal GROUP BY puede hacer que creas que un refugio está a salvo cuando ya ha caído. Revísalos como revisarías las barricadas de tu refugio.
¿Quieres las respuestas?
Estoy preparando un vídeo en el canal de YouTube donde resolveremos paso a paso estos ejercicios y explicaremos cada detalle para que no sólo los copies, sino que los entiendas. Eso sí, tendrás que esperar a la semana que viene, mientras tanto intenta resolver estos ejercicios por tu cuenta para practicar y deja tus soluciones en comentarios.
Próximamente…
En la próxima entrega, el caos llegará al máximo nivel: funciones de ventana, CTEs y agregaciones avanzadas para planificar la evacuación definitiva. Porque el fin se acerca, y sólo los que dominan SQL hasta el último detalle podrán salir con vida.
SQL contra el Apocalipsis Mutante (Parte 1): Aprende SQL y salva el mundo
Aprende SQL básico con ejercicios épicos para analizar datos y sobrevivir al apocalipsis mutante con consultas SELECT y JOIN.
Page Split: el invitado indeseado en SQL Server
Page Split en SQL Server: qué es, por qué ocurre, cómo detectarlo y qué hacer para evitar que arruine el rendimiento de tu base de datos.
El problema del Reenvío de punteros en tablas heap
Descubre el impacto del reenvío de punteros en tablas heap de SQL Server y cómo evitar este problema que degrada el rendimiento.
SORT_IN_TEMPDB: lo que de verdad hay que saber
SORT_IN_TEMPDB en SQL Server: cómo afecta al rendimiento, al uso de espacio y a la creación de índices en entornos de producción.

