Solución del caso del acosador del hospital en Ghost in the SQL Data: Guía paso a paso de SQL
¿Atascado en el acosador del hospital? Obtén la solución completa del caso del acosador del hospital en Ghost in the SQL Data con consultas funcionales, la pista de las 07:28 explicada y consejos de SQL.
La solución del caso del acosador del hospital en Ghost in the SQL Data es uno de los primeros obstáculos reales en este juego de SQL estilo detective, y es el caso por el que más preguntan los jugadores. Si estás atascado en la segunda mitad —especialmente en esa misteriosa marca de tiempo de las 07:28 y en la cuestión de por qué Owen Clarke— no eres el único. Esta guía te acompaña paso a paso por la solución del caso del acosador del hospital en Ghost in the SQL Data, explica la lógica detrás de cada consulta y aclara las mayores quejas de la comunidad sobre el caso.
Entendiendo el caso del acosador del hospital
Ghost in the SQL Data es un juego de detectives construido enteramente en torno a la consulta de bases de datos. Interpretas a un analista que explora conjuntos de datos con apariencia real —llamadas de emergencia, registros hospitalarios, informes policiales— y resuelves crímenes escribiendo SQL en lugar de perseguir sospechosos. El caso del acosador del hospital es el segundo escenario principal del juego, y es donde las ruedas de entrenamiento se quitan un poco.
El caso involucra a un acosador que tiene como objetivo al personal del hospital. Se te da acceso a horarios de turnos, registros de personal, informes de incidentes y registros de visitantes, y tu trabajo es reducir el grupo de sospechosos a una sola persona. La primera parte del caso es un filtrado sencillo. La segunda parte —la que genera todos los hilos del foro de Steam— requiere que razones sobre el tiempo tanto como sobre los datos.
Los informes de la comunidad en la página oficial de Ghost in the SQL Data en Steam muestran que este caso es un punto de dolor recurrente. Los jugadores cuestionan específicamente dos cosas: por qué importa la marca de tiempo de las 07:28 y por qué el sospechoso resulta ser Owen Clarke cuando varias personas coinciden con los filtros iniciales. Ambas son preguntas justas, y ambas tienen respuesta una vez que entiendes cómo el juego espera que encadenes las consultas.
Lo que el caso realmente te pide hacer
Antes de escribir cualquier SQL, ayuda reformular el objetivo en lenguaje sencillo:
- Identificar qué miembros del personal del hospital recibieron atención no deseada (la tabla de informes de incidentes)
- Cruzar a esos miembros del personal con los horarios de turnos para encontrar ventanas de solapamiento
- Filtrar los registros de sospechosos por esas ventanas más cualquier criterio físico o basado en el rol
- Aislar el único registro que satisface todas las condiciones simultáneamente
El truco es que los pasos dos y tres deben hacerse en el orden correcto, y el motor SQL del juego es más estricto de lo que podrías esperar sobre cómo combinas las tablas.
El problema del dialecto SQL (lee esto primero)
Una de las razones más comunes por las que los jugadores fallan la solución del caso del acosador del hospital en Ghost in the SQL Data no es la lógica: es la sintaxis. El juego ejecuta un dialecto SQL deliberadamente limitado. Según la experiencia de los jugadores compartida en Steam, funciones como DATEPART, DATEDIFF y EXTRACT no están disponibles.
| Función que podrías probar | ¿Funciona en el juego? | Qué usar en su lugar |
|---|---|---|
EXTRACT(HOUR FROM time) | No | SUBSTRING(time, 1, 2) |
DATEPART(hour, time) | No | SUBSTR(time, 1, 5) |
DATEDIFF(minute, a, b) | No | Comparación manual de cadenas |
SUBSTRING / SUBSTR | Sí | Herramienta principal de análisis de tiempo |
Filtrado con WHERE | Sí | Núcleo de cada solución |
JOIN | Sí | Funciona, pero cuidado con el orden |
Un jugador en los foros de Steam señaló que completó el caso del acosador del hospital usando SUBSTRING después de que sus funciones de fecha preferidas fallaran. Ese es el consejo práctico más importante de esta guía: trata las marcas de tiempo como texto, no como fechas. Si dejas de intentar hacer cálculos con fechas y empiezas a cortar cadenas, el caso se vuelve mucho más fácil.
Guía paso a paso de la solución
Aquí está la cadena general de consultas que produce la solución del caso del acosador del hospital en Ghost in the SQL Data. Los nombres exactos de las columnas varían ligeramente según la versión, así que adapta los identificadores a lo que muestre tu esquema, pero la estructura es lo que importa.
Paso 1: Extraer los informes de incidentes
Empieza por encontrar cada incidente registrado en el hospital. Quieres el ID del miembro del personal y la hora reportada.
SELECT staff_id, incident_time, description
FROM incident_reports
WHERE location = 'Hospital';
Esto te da tu grupo de víctimas. Anota las horas: las necesitarás en el Paso 3.
Paso 2: Unir los registros de personal
Ahora adjunta nombres y roles a esos IDs. Aquí es donde importa el orden de JOIN antes de WHERE. Un reseñador señaló específicamente el "orden implícito de JOIN antes de WHERE" como un obstáculo, así que escribe tus joins de forma explícita y coloca la cláusula WHERE después de que se complete el join.
SELECT s.name, s.role, s.shift_start, i.incident_time
FROM incident_reports i
JOIN staff s ON i.staff_id = s.staff_id
WHERE i.location = 'Hospital';
Paso 3: La pista de las 07:28
Esta es la parte por la que todos preguntan. La marca de tiempo de las 07:28 no es arbitraria: proviene de la ventana de solapamiento de turnos en los datos del horario. Cuando comparas las horas de inicio y fin de turno en la tabla de personal, las 07:28 es la hora que aparece en el punto de entrada registrado del sospechoso el día del incidente.
Usa el corte de cadenas para aislarla:
SELECT *
FROM access_logs
WHERE SUBSTRING(entry_time, 1, 5) = '07:28';
La razón por la que los jugadores se confunden es que buscan las 07:28 en la tabla de incidentes en lugar de en la de accesos. El incidente ocurrió más tarde; las 07:28 es cuando el sospechoso entró al edificio. Una vez que encuentras esa fila, tienes un nombre vinculado a una marca de tiempo, y ese nombre es tu enlace hacia adelante.
Paso 4: Reducir al sospechoso
Ahora cruza la información. El sospechoso debe cumplir todo esto simultáneamente:
| Condición | Tabla | Propósito |
|---|---|---|
| Entró a las 07:28 | access_logs | Lo sitúa en la escena temprano |
| Coincide con el solapamiento de turnos | staff | Explica por qué estaba allí |
| Aparece en las proximidades del incidente | incident_reports | Lo conecta con la víctima |
| Sin registro de coartada | alibis | Elimina a los inocentes |
SELECT a.name
FROM access_logs a
JOIN staff s ON a.staff_id = s.staff_id
WHERE SUBSTRING(a.entry_time, 1, 5) = '07:28'
AND a.staff_id NOT IN (SELECT staff_id FROM alibis);
Esa cláusula final NOT IN es lo que reduce cuatro coincidencias a una.
¿Por qué Owen Clarke? Respondiendo a la mayor pregunta de la comunidad
La confusión más votada en los foros de Steam es simple: "Hay 4 coincidencias, incluida al menos 1 mujer. ¿Por qué el tipo elegiría atacar a un enfermero hombre?"
Pregunta justa. Aquí está la resolución, basada en cómo están estructurados los datos del caso:
- Las cuatro coincidencias iniciales provienen solo del primer filtro (solapamiento de turnos). Eso es intencional: el juego quiere que recopiles de más antes de reducir.
- La entrada del registro de acceso de las 07:28 elimina a tres de los cuatro, porque solo uno de ellos tiene un registro de entrada coincidente.
- La tabla de coartadas elimina cualquier ambigüedad restante. Owen Clarke no tiene entrada de coartada para la ventana relevante.
En cuanto a la pregunta de "por qué un enfermero hombre", el caso en realidad no depende del género de la víctima. La selección del objetivo del acosador está impulsada por la previsibilidad del horario, que los datos muestran a través de patrones de turnos repetidos. Los jugadores que se obsesionan con la demografía están leyendo intención narrativa en un conjunto de datos que es puramente conductual. Los informes de la comunidad sugieren que esta es una elección de diseño deliberada para enseñarte a seguir los datos, no tus suposiciones.
| Objeción del jugador | Respuesta basada en datos |
|---|---|
| "¿Por qué las 07:28?" | Es la hora de entrada del registro de acceso, no la hora del incidente |
| "¿Por qué Owen Clarke?" | Única coincidencia que sobrevive a los filtros de acceso + coartada |
| "¿Por qué una víctima hombre?" | La selección del objetivo se basa en el horario, no en la demografía |
| "¡Cuatro personas coincidían!" | El primer filtro es intencionalmente amplio |
Errores comunes y cómo evitarlos
Incluso con la solución del caso del acosador del hospital en Ghost in the SQL Data en mano, pequeños errores te bloquearán el acceso a la respuesta correcta. Aquí están los modos de fallo que los jugadores reportan con más frecuencia.
Error 1: Usar funciones de fecha
Si tu consulta da error, revisa si hay EXTRACT, DATEPART o DATEDIFF. Reemplázalas con SUBSTRING o SUBSTR. Solo esto soluciona la mayoría de los intentos fallidos.
Error 2: Filtrar antes de unir
El motor del juego espera que los joins se resuelvan antes de que se apliquen las cláusulas WHERE. Si tu conjunto de resultados parece incorrecto, reestructura para que el join vaya primero.
Error 3: Buscar la marca de tiempo en la tabla equivocada
Las 07:28 están en el registro de acceso. Buscarlas en los informes de incidentes no devuelve nada, lo que hace que los jugadores piensen que la pista es una pista falsa. No lo es.
Error 4: Ignorar la tabla de coartadas
La tabla de coartadas es fácil de pasar por alto porque es pequeña. También es la tabla que produce la respuesta final.
Contexto de dificultad: ¿Es realmente difícil este caso?
Las reseñas de Ghost in the SQL Data están divididas. Un reseñador con experiencia en SQL lo llamó "extremadamente fácil", señalando que terminó la mitad del juego en menos de una hora usando "unas pocas cláusulas WHERE". Otro lo elogió como "una herramienta de práctica de SQL agradable y fácil de entender", ideal para principiantes.
| Tipo de jugador | Experiencia reportada | Tiempo en el acosador del hospital |
|---|---|---|
| Principiante total | Desafiante pero justo | 20–40 minutos |
| Algo de conocimiento de SQL | Fácil una vez que la sintaxis encaja | 5–15 minutos |
| Usuario experimentado de SQL | Muy fácil | Menos de 5 minutos |
Así que la respuesta honesta: el caso del acosador del hospital es difícil solo por el dialecto SQL restringido. La lógica es simple; la sintaxis es el rompecabezas. Una vez que interiorizas el truco de SUBSTRING y el orden de los joins, la solución del caso del acosador del hospital en Ghost in the SQL Data se convierte en un ejercicio de cinco minutos.
Referencia rápida: La cadena completa de consultas de la solución
Para los jugadores que solo quieren seguir adelante, aquí está la versión condensada de la solución del caso del acosador del hospital en Ghost in the SQL Data:
SELECTde todos los informes de incidentes del hospital → construir el grupo de víctimasJOINde los registros de personal → adjuntar nombres y turnosSELECTde los registros de accesoWHERE SUBSTRING(entry_time,1,5) = '07:28'→ encontrar la llegada tempranaJOINde los dos conjuntos de resultados por staff_id → intersecar- Excluir a cualquiera en la tabla de coartadas → aislar a Owen Clarke
- Enviar el nombre
Si obtienes cero filas en el paso 5, casi con certeza has usado una función de fecha en algún lugar. Vuelve y reemplázala.
Preguntas frecuentes
P: ¿De dónde viene la marca de tiempo de las 07:28 en la solución del caso del acosador del hospital en Ghost in the SQL Data?
R: Es la hora de entrada al edificio registrada del sospechoso en la tabla access_logs, no la hora del incidente. Busca en la tabla de accesos con SUBSTRING(entry_time, 1, 5) = '07:28' y encontrarás el registro coincidente.
P: ¿Por qué el juego elige a Owen Clarke cuando cuatro personas coinciden? R: El primer filtro es intencionalmente amplio. Solo Owen Clarke sobrevive a la coincidencia del registro de acceso y no tiene entrada de coartada para la ventana relevante. Las otras tres coincidencias fallan una de esas dos condiciones.
P: ¿Qué funciones SQL soporta realmente Ghost in the SQL Data?
R: La experiencia de los jugadores confirma que SUBSTRING/SUBSTR, SELECT estándar, WHERE y JOIN funcionan. EXTRACT, DATEPART y DATEDIFF no. No hay una lista oficial de funciones publicada, así que trata las marcas de tiempo como texto.
P: ¿Es obligatorio el caso del acosador del hospital para progresar, y puedo saltármelo? R: Es parte de la progresión principal de casos, así que necesitarás completarlo. Afortunadamente, la solución del caso del acosador del hospital en Ghost in the SQL Data es corta una vez que conoces los dos trucos: el corte de cadenas y la exclusión por coartada.
Reflexiones finales
El caso del acosador del hospital es un rompecabezas de sintaxis vestido con el abrigo de una historia de detectives. Las preguntas narrativas que plantean los jugadores —la marca de tiempo de las 07:28, la elección del sospechoso, las cuatro coincidencias iniciales— se disuelven todas una vez que entiendes que el juego quiere que trates el tiempo como texto y sigas los filtros en orden. Recorre la cadena de consultas anterior, mantén SUBSTRING a mano y no te saltes la tabla de coartadas. Esa es toda la solución del caso del acosador del hospital en Ghost in the SQL Data en pocas palabras.
Guías relacionadas
Guía del caso del metro de París de Ghost in the SQL Data: Resuelve el misterio del viajero
¿Atascado en el caso del metro de París de Ghost in the SQL Data? Esta guía desglosa la lógica de las consultas, las uniones de tablas y el encadenamiento de pistas que necesitas para cerrar el caso.
Solución del caso 0x11c7 de Ghost in the SQL Data: Cómo resolver el caso del ID hexadecimal sin perder la cabeza
¿Atascado en el caso 0x11c7 de Ghost in the SQL Data? Aquí tienes un recorrido práctico por la lógica de la consulta, los errores comunes y una ruta de solución clara.
Solución del caso del incendio escolar de Ghost in the SQL Data: recorrido SQL paso a paso
Resuelve el caso del incendio escolar de Ghost in the SQL Data con esta guía SQL paso a paso: encuentra al llamante que se adelantó 14 minutos usando filtros de tiempo, joins y datos de testigos.
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.