Solución del primer caso de Ghost in the SQL Data: Guía paso a paso para principiantes

¿Atascado en el caso inicial? Esta solución del primer caso de Ghost in the SQL Data te guía por la lógica de consultas, las tablas y los filtros que necesitas para resolverlo.

El primer caso de Ghost in the SQL Data está diseñado para enseñarte a pensar como un detective que habla SQL — y si estás mirando un muro de tablas preguntándote por dónde empezar, no estás solo. Esta solución del primer caso de Ghost in the SQL Data desglosa el razonamiento detrás de las consultas para que entiendas por qué importa cada filtro, no solo qué botones pulsar. Acertar con el caso inicial es importante porque establece los patrones de consulta que reutilizarás durante el resto del juego, y una solución sólida del primer caso de Ghost in the SQL Data te da esa base sin arruinar la diversión de las investigaciones posteriores.

Cómo funciona el primer caso en Ghost in the SQL Data

El juego te pone en la piel de un analista que rebusca entre un año de registros de llamadas de emergencia de París. La descripción de la tienda plantea el gancho con claridad: una llamada reportó un incendio en una escuela 14 minutos antes de que el primer testigo lo viera, y tu trabajo es descubrir quién hizo esa llamada — usando SQL y nada más que SQL.

Esa premisa da forma a todo el primer caso. No persigues a un sospechoso por árboles de diálogo ni por eventos de tiempo rápido. Estás consultando una base de datos, reduciendo filas y dejando que las pruebas converjan en un único registro.

Qué estás resolviendo en realidad

El rompecabezas central es una discrepancia temporal. Entró una llamada antes de que nadie pudiera haber presenciado el evento de forma plausible. Esa brecha es tu pista. Tus consultas deben:

  • Localizar la llamada relacionada con el incendio en el registro de emergencias
  • Comparar su marca de tiempo con las marcas de tiempo de testigos o informes
  • Aislar al llamante detrás del informe sospechosamente temprano

Los informes de la comunidad describen el primer caso como una incorporación suave — un reseñador señaló que la mayoría de los casos se pueden resolver con solo un puñado de cláusulas WHERE. Son buenas noticias para los recién llegados: la solución del primer caso no requiere joins, subconsultas ni funciones de ventana.

El sabor de SQL con el que trabajas

Antes de escribir una sola línea, conoce tus herramientas. La experiencia de los jugadores en los foros de Steam señala que el SQL del juego es bastante básico y que algunas funciones conocidas simplemente no están disponibles — DATEPART, DATEDIFF y EXTRACT fueron reportadas como ausentes por un jugador, que finalmente resolvió un caso posterior usando SUBSTRNG en su lugar.

Categoría de funciónEstado en el juegoSolución práctica
DATEPART / EXTRACTReportada como no disponibleFiltrar con comparaciones de cadenas en columnas de fecha
DATEDIFFReportada como no disponibleComparar directamente los valores de marca de tiempo almacenados
SUBSTRNG / SUBSTRDisponibleRecortar cadenas de fecha u hora
WHERE + operadores de comparaciónTotalmente compatibleTu herramienta principal de reducción
Joins implícitosCompatibleNota: JOIN se evalúa antes que WHERE

Vale la pena memorizar esa última fila. Un hilo de la comunidad señaló específicamente el "orden implícito de JOIN antes de WHERE" como un obstáculo. Incluso en el primer caso, si consultas más de una tabla, recuerda que el join se resuelve primero.

Solución del primer caso de Ghost in the SQL Data: la ruta de consultas

Aquí está la cadena de razonamiento, presentada como una secuencia que puedes seguir en tu propia sesión. Los nombres exactos de tablas y columnas pueden variar ligeramente según la versión, así que trátalos como el patrón y no como un script para copiar y pegar.

Paso 1 — Explora antes de filtrar

Nunca empieces con un WHERE estrecho. Empieza amplio y mira lo que tienes.

SELECT *
FROM calls
LIMIT 20;

Lee los nombres de las columnas. Identifica cuáles contienen marcas de tiempo, ubicaciones, tipos de llamada e identificadores de llamantes. Este hábito de cinco minutos te ahorrará horas a lo largo de todo el juego.

Paso 2 — Encuentra la llamada del incendio

Reduce a los registros relacionados con incendios. Según cómo se almacene el tipo de llamada, podrías filtrar por una columna de categoría o buscar en un campo de descripción.

SELECT *
FROM calls
WHERE call_type = 'fire';

Si eso no devuelve nada, tu valor está escrito o en mayúsculas/minúsculas de forma diferente — prueba con un patrón LIKE en su lugar:

SELECT *
FROM calls
WHERE call_type LIKE '%fire%';

Paso 3 — Añade el filtro de ubicación

El caso gira en torno a una escuela. Añade esa restricción encima:

SELECT *
FROM calls
WHERE call_type LIKE '%fire%'
  AND location LIKE '%school%';

Paso 4 — Ordena por hora e inspecciona el valor atípico

Ahora ordena los resultados cronológicamente. La llamada relacionada con el incendio más temprana en esa escuela es tu registro principal sospechoso.

SELECT *
FROM calls
WHERE call_type LIKE '%fire%'
  AND location LIKE '%school%'
ORDER BY call_time ASC;

Paso 5 — Contrasta al llamante

Con la llamada sospechosa aislada, extrae los datos del llamante de la tabla correspondiente y confirma la identidad. Aquí es donde se resuelve el caso.

PasoObjetivoCláusula clave
1Entender el esquemaSELECT * + LIMIT
2Encontrar llamadas de incendioWHERE call_type LIKE
3Fijar la ubicaciónAND location LIKE
4Detectar la llamada tempranaORDER BY call_time ASC
5Identificar al llamanteJoin o búsqueda por ID del llamante

Errores comunes que frenan a los nuevos jugadores

La mayoría de los fallos en el primer caso no son errores de lógica — son errores de sintaxis y de suposiciones. Aquí están los que los miembros de la comunidad encuentran con más frecuencia.

Asumir que existen las funciones SQL estándar

Si vienes de PostgreSQL o SQL Server, tu memoria muscular te traicionará. Las funciones a las que recurres automáticamente pueden no estar implementadas. Comprueba qué acepta el juego antes de construir una expresión compleja, y recurre a la coincidencia simple de cadenas cuando tengas dudas.

Olvidar la sensibilidad a mayúsculas y minúsculas

Las comparaciones de cadenas pueden ser quisquillosas. 'Fire' y 'fire' pueden no coincidir. Usa LIKE con comodines o prueba ambas variantes cuando un filtro devuelva cero filas inesperadamente.

Filtrar demasiado pronto

Apilar cinco condiciones AND antes de haber confirmado cada una por separado es la forma más rápida de acabar con un conjunto de resultados vacío y mucha confusión. Añade una restricción a la vez y verifica que el número de filas disminuya como esperas.

Ignorar el orden del join

Si tu solución del primer caso involucra dos tablas, recuerda que el join se ejecuta antes de que el WHERE filtre. Una condición que parece correcta de forma aislada puede comportarse de forma diferente una vez que hay un join en juego. Construye el join primero, inspecciona el resultado intermedio y luego filtra.

Comparación del primer caso con investigaciones posteriores

Entender dónde se sitúa el caso inicial en la curva de dificultad te ayuda a calibrar cuánto esfuerzo invertir.

CasoHabilidad central evaluadaDificultad reportada
Primer caso (incendio escolar)Filtrado y ordenación básicos con WHEREPrincipiante
Hospital StalkerFunciones de cadena, razonamiento en varias partesIntermedio
Paris Bank RobberyReconocimiento de patrones entre registrosIntermedio–Avanzado

La experiencia de los jugadores en el centro de la comunidad de Steam sugiere que el caso Hospital Stalker hace tropezar a la gente porque la segunda parte de la deducción no resulta obvia — un jugador se preguntó de dónde venía un valor temporal específico (07:28) y por qué una persona en particular era el objetivo cuando coincidían varios registros. Eso es un salto en complejidad de razonamiento respecto al primer caso, donde la lógica es lineal.

El Paris Bank Robbery recibió comentarios similares sobre ambigüedad, con un jugador señalando patrones claros (bancos asegurados por la misma compañía, robos en orden ascendente de puntuación de seguridad) que aun así requerían interpretación. La conclusión: el primer caso te enseña la mecánica, y los casos posteriores ponen a prueba tu inferencia.

Consejos para resolver el primer caso más rápido

Algunos hábitos de jugadores experimentados te ahorrarán tiempo en tu partida.

  • Lee en voz alta cada encabezado de columna. Suena absurdo, pero te obliga a fijarte en campos que de otro modo pasarías por alto.
  • Mantén un borrador con los recuentos de filas. Después de cada filtro, anota cuántas filas quedan. Un filtro que no elimina nada es un filtro que no funciona.
  • Usa LIMIT con generosidad mientras exploras. Rara vez necesitas la tabla completa para entender su forma.
  • Prueba una condición a la vez. Construye tu consulta de forma incremental en lugar de escribirla entera de golpe.
  • Vuelve a leer el resumen del caso. El texto narrativo contiene las restricciones — la escuela, el incendio, la brecha temporal. Traduce cada detalle narrativo en una cláusula.

Una consulta rápida de verificación

Cuando creas que has encontrado la respuesta, verifícala consultando el registro único directamente:

SELECT *
FROM calls
WHERE call_id = <your_suspect_id>;

Si los detalles coinciden con el resumen, has terminado. Si no, retrocede un paso y amplía tu filtro.

Cuándo consultar una solución y cuándo seguir intentándolo

La solución del primer caso de Ghost in the SQL Data es lo bastante corta como para que la mayoría de los jugadores la terminen en minutos. Pero si llevas más de quince minutos atascado, el cuello de botella suele ser una de dos cosas: una función que no existe en este motor, o un valor de cadena que no coincide con tu suposición.

Consulta las discusiones de la comunidad de Steam del juego — los jugadores publican activamente sobre funciones ausentes y rarezas de sintaxis, y la página oficial de Ghost in the SQL Data en Steam aloja esos hilos junto con las notas del parche. Una lectura de dos minutos a menudo te desbloquea más rápido que otros veinte minutos de conjeturas.

Para los jugadores que quieren práctica estructurada más allá de la campaña, el juego incluye compatibilidad con Steam Workshop, y escenarios creados por la comunidad como "A Ransom for Biscuit" y "Wordle in SQL?!" amplían el aprendizaje mucho más allá de los casos integrados. Es una señal clara de que los desarrolladores concibieron el primer caso como una plataforma de lanzamiento, no como una barrera.

Preguntas frecuentes

P: ¿Necesito experiencia previa en SQL para resolver la solución del primer caso de Ghost in the SQL Data? No. El caso inicial está pensado para principiantes y se apoya en sentencias básicas SELECT, WHERE y ORDER BY. Los reseñadores describen el juego como una herramienta de práctica paso a paso que te ayuda a entender la sintaxis y corregir errores sobre la marcha.

P: ¿Por qué no funcionan DATEDIFF o EXTRACT en el primer caso? Los informes de la comunidad indican que el motor SQL del juego es una variante simplificada que omite varias funciones de fecha estándar. Usa comparaciones de cadenas o SUBSTRNG para aislar los componentes de fecha y hora en su lugar.

P: ¿Cuánto se tarda en el primer caso? La mayoría de los jugadores lo superan en unos minutos. Un reseñador completó aproximadamente la mitad del juego en menos de una hora jugando deliberadamente despacio, lo que sitúa el caso inicial muy por debajo de los diez minutos para la mayoría de la gente.

P: ¿Puedo usar joins en la solución del primer caso de Ghost in the SQL Data? Puedes, y el motor admite joins implícitos — pero recuerda que JOIN se evalúa antes que WHERE. Para el primer caso en concreto, el filtrado de una sola tabla suele ser suficiente para llegar a la respuesta.