Ejemplos de consultas SQL de Ghost in the SQL Data: consultas detectivescas prácticas para resolver todos los casos

Aprende ejemplos prácticos de consultas SQL de Ghost in the SQL Data para filtrar, unir y agregar datos de llamadas de emergencia de París y resolver cada investigación.

Por qué importan los ejemplos de consultas SQL en Ghost in the SQL Data

Ghost in the SQL Data es un juego de detectives donde el arma homicida es una sentencia SELECT. Publicado el 29 de octubre de 2026 por el desarrollador en solitario Isaac Menard, el juego te sumerge en un año de llamadas a la centralita de emergencias de París y te pide que descubras la verdad con nada más que SQL. Si alguna vez te has quedado mirando un cursor parpadeante mientras una escuela arde en el expediente del caso, ya sabes por qué importan unos buenos ejemplos de consultas SQL de Ghost in the SQL Data: el juego te entrega una pregunta, no un tutorial, y espera que construyas tú mismo la respuesta.

Según la página oficial de la tienda de Steam del juego, los primeros casos enseñan lo básico mientras que los posteriores "solo te dan la pregunta". Ese diseño significa que tu vocabulario de consultas se convierte en tu caja de herramientas de detective. Esta guía desglosa los patrones que te llevan desde el primer registro de llamadas filtrado hasta las uniones de múltiples tablas que revelan a un llamante catorce minutos antes de que el primer testigo viera humo.

Las tablas principales que consultarás

Antes de escribir una sola línea, entiende qué estás consultando. El juego se centra en los registros de llamadas de emergencia de París, y los informes de la comunidad sugieren que los casos giran en torno a un pequeño conjunto de tablas relacionadas: registros de llamadas, declaraciones de testigos, registros de ubicación e informes de incidentes. Los nombres exactos de las tablas varían según el caso, así que inspecciona siempre primero el esquema.

Tipo de tablaQué suele contenerPor qué importa
Registro de llamadasMarcas de tiempo, ID del llamante, motivo de la llamadaEstablece la línea temporal
Declaraciones de testigosHora observada, ubicación, descripciónContrasta el registro de llamadas
Registros de ubicaciónDirecciones, distritos, puntos de referenciaSitúa los eventos en París
Informes de incidentesHora oficial, categoría, resultadoConfirma o contradice las llamadas

Una consulta rápida de descubrimiento es tu primer movimiento en casi todos los casos. Ejecuta algo como SELECT * FROM call_log LIMIT 10; para ver los nombres de las columnas, luego SELECT COUNT(*) FROM call_log; para calibrar la escala. La experiencia de los jugadores demuestra de forma consistente que dedicar dos minutos a mapear el esquema ahorra veinte minutos de conjeturas después.

Filtrado y ordenación: tus primeros movimientos detectivescos

La mayoría de los casos comienzan con una ventana temporal. El escenario insignia —una llamada que informa de un incendio en una escuela catorce minutos antes de que el primer testigo lo viera— es un problema puro de WHERE y ORDER BY. Necesitas las filas que caen antes de una marca de tiempo conocida, ordenadas para que aparezca primero la más temprana.

SELECT call_time, caller_id, reason
FROM call_log
WHERE call_time < '2026-03-14 08:42:00'
ORDER BY call_time ASC;

Esta es la columna vertebral de los ejemplos de consultas SQL de Ghost in the SQL Data que reutilizarás constantemente. Sustituye la marca de tiempo literal por una subconsulta que extraiga la hora de observación del testigo, y la consulta se vuelve autoajustable entre casos.

Patrón de filtroUso de ejemploPalabra clave
Rango de fechasLlamadas de un día concretoBETWEEN
Coincidencia de textoMotivo que contiene "fire"LIKE '%fire%'
ExclusiónIgnorar llamadas de prueba o duplicadasNOT IN
Comprobación de nulosLlamante sin nombre o dirección faltanteIS NULL

El caso del billete de metro sin nombre es un puzle clásico de IS NULL. Cuando un campo está en blanco, = NULL no devuelve nada: debes usar IS NULL. Esa única distinción desconcierta a muchos investigadores novatos, según los informes de la comunidad.

Unir tablas para conectar pistas

Las consultas de una sola tabla resuelven los calentamientos. Los casos reales exigen uniones. Cuando un registro de llamadas hace referencia a un location_id y la dirección vive en otra tabla, las enlazas con JOIN. Aquí es donde los ejemplos de consultas SQL de Ghost in the SQL Data pasan del filtrado a la deducción real.

SELECT c.call_time, c.reason, l.address, l.arrondissement
FROM call_log c
JOIN locations l ON c.location_id = l.location_id
WHERE l.arrondissement = '5e'
ORDER BY c.call_time;

Un LEFT JOIN es tu red de seguridad cuando sospechas que faltan datos; por ejemplo, las llamadas sin un registro de ubicación coincidente pueden ser sospechosas por sí mismas. El caso del robo de la corona del Musée d'Orsay recompensa a los investigadores que advierten los registros que no se unen limpiamente.

Tipo de uniónDevuelveUso detectivesco
INNER JOINSolo filas coincidentesConfirmar vínculos conocidos
LEFT JOINTodas las filas izquierdas más las coincidenciasEncontrar datos huérfanos o faltantes
SELF JOINTabla unida consigo mismaDetectar llamantes recurrentes

Agregación y agrupación para cazar patrones

A veces la respuesta no es una sola fila sino un patrón. GROUP BY con funciones de agregación convierte un año de llamadas en un perfil de sospechoso. Contar llamadas por llamante, promediar intervalos de respuesta o contabilizar incidentes por distrito dependen todos de la misma estructura.

SELECT caller_id, COUNT(*) AS call_count
FROM call_log
GROUP BY caller_id
HAVING COUNT(*) > 3
ORDER BY call_count DESC;

La cláusula HAVING filtra grupos después de la agregación; piénsala como un WHERE para resúmenes. En el caso del incendio escolar, agrupar por llamante y filtrar por recuentos altos puede sacar a la luz a un bromista en serie o a un conjunto coordinado de llamadas. Los jugadores de la comunidad informan de que HAVING es la cláusula más infrautilizada entre los principiantes, y dominarla desbloquea varios casos de mitad del juego.

AgregadoPregunta que respondeEncaje en el caso
COUNT¿Cuántas llamadas?Llamantes recurrentes
AVG¿Intervalo medio entre eventos?Anomalías en la línea temporal
MIN / MAX¿Actividad más temprana y más tardía?Sospechosos que actúan primero
SUM¿Duración o cantidad total?Patrones de duración de llamadas

Subconsultas y CTE para razonamiento en varios pasos

Los casos del final del juego encadenan lógica: encuentra la hora del testigo, luego encuentra las llamadas anteriores, luego empareja a esos llamantes con una ubicación. Las subconsultas anidadas se encargan de esto, pero las expresiones de tabla comunes (CTE) lo mantienen legible. Los ejemplos de consultas SQL de Ghost in the SQL Data que usan cláusulas WITH se leen como un esquema de investigación.

WITH witness_time AS (
  SELECT observed_time FROM witness_statements WHERE case_id = 1
)
SELECT call_time, caller_id
FROM call_log
WHERE call_time < (SELECT observed_time FROM witness_time)
ORDER BY call_time DESC
LIMIT 5;

Esta estructura refleja cómo piensan los detectives: establece un hecho, luego consulta contra él. El tablero del investigador —donde fijas resultados, gráficos y notas— se combina de forma natural con las CTE, porque cada paso se convierte en un resultado discreto y fijable.

Consejos prácticos para consultas más limpias

Más allá de la sintaxis, los hábitos separan las investigaciones fluidas de las frustrantes. Estos consejos reflejan tanto la estructura del juego como las buenas prácticas generales de SQL.

  • Inspecciona siempre primero el esquema. Los nombres de las columnas difieren entre casos; adivinar hace perder tiempo.
  • Empieza amplio, luego acota. Un SELECT * con un LIMIT revela la forma de los datos antes de filtrar.
  • Comenta tus consultas. Los casos posteriores revisitan lógica anterior, y las notas en el tablero del investigador ayudan.
  • Prueba las marcas de tiempo con cuidado. Los errores de un minuto pueden ocultar la llamada crucial.
  • Usa el editor de niveles. El juego incluye un editor de niveles y soporte para Steam Workshop, así que puedes crear tus propios puzles SQL y practicar patrones.

El juego también incluye 38 logros de Steam, varios de los cuales recompensan consultas eficientes o ingeniosas en lugar de la fuerza bruta, según la ficha de la tienda. Eso incentiva aprender los patrones elegantes anteriores en lugar de desplazarte por tablas sin procesar.

Preguntas frecuentes

¿Necesito experiencia previa en SQL para usar estos ejemplos de consultas SQL de Ghost in the SQL Data? No. Los primeros casos del juego enseñan lo básico, y los patrones de aquí —filtrado, unión, agrupación— son exactamente lo que introducen esos tutoriales. Los principiantes pueden seguirlos caso por caso.

¿Cuál es el patrón de consulta más importante que aprender primero? Filtrar con WHERE y ordenar con ORDER BY. Casi todos los casos comienzan con una ventana temporal, y el escenario insignia del incendio escolar se basa enteramente en esa base.

¿Por qué mi comprobación = NULL no devuelve nada? SQL trata NULL como desconocido, por lo que la igualdad nunca coincide. Usa IS NULL o IS NOT NULL en su lugar. Esto desconcierta a muchos jugadores en el caso del billete de metro sin nombre.

¿Puedo practicar fuera de los casos principales? Sí. Ghost in the SQL Data incluye un editor de niveles e integración con Steam Workshop, lo que te permite crear puzles SQL personalizados o descargar los creados por la comunidad para afinar tus habilidades.

Para las últimas actualizaciones, notas de parche y niveles de la comunidad, consulta la página oficial de Ghost in the SQL Data en Steam. Ya sea que persigas a un llamante fantasma o una corona robada, los patrones de consulta anteriores convierten los datos brutos de llamadas de París en una confesión, una SELECT a la vez.