🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónSQL sobre eventos
5 tareas · 40 min · Principiante
Muchas preguntas de detección se contestan con una consulta: quién falló más veces, desde dónde se probaron muchas cuentas, qué usuario aparece en los eventos y no existe en el directorio. En Bodegas Costa Alta tienes una tabla de eventos de inicio de sesión y una de cuentas, con las consultas ya guardadas y su resultado a la vista. No escribes SQL en el navegador: lees cada sentencia, entiendes qué pregunta hace y compruebas que su resultado sale de las filas. Aprendes a agrupar, a filtrar antes y después de agrupar, a cruzar tablas y a desconfiar de un conteo cuando hay valores vacíos.
Objetivo de la sala
Muchas preguntas de detección se contestan con una consulta: quién falló más veces, desde dónde se probaron muchas cuentas, qué usuario aparece en los eventos y no existe en el directorio. En Bodegas Costa Alta tienes una tabla de eventos de inicio de sesión y una de cuentas, con las consultas ya guardadas y su resultado a la vista. No escribes SQL en el navegador: lees cada sentencia, entiendes qué pregunta hace y compruebas que su resultado sale de las filas. Aprendes a agrupar, a filtrar antes y después de agrupar, a cruzar tablas y a desconfiar de un conteo cuando hay valores vacíos.GROUP BY reúne las filas que comparten el mismo valor en una columna y permite calcular algo por grupo: cuántas hay, cuántos valores distintos. COUNT(*) cuenta las filas de cada grupo. La condición del WHERE se aplica antes: solo las filas que la cumplen llegan a ser contadas.
Abre la consulta de fallos por usuario en eventos_auth: filtra los eventos con resultado = 'fallo' y los agrupa por usuario. Cada fila del resultado resume un grupo.
Responde para continuar
Escribe cuántos fallos de inicio de sesión acumula `sergio.nava`.
Ver pista de ayuda
Cuenta en la tabla `eventos_auth` las filas de ese usuario cuyo resultado es fallo, sin contar las correctas.
Agrupar por usuario responde «quién falla mucho». Agrupar por origen y contar usuarios distintos responde otra cosa: «desde dónde se probaron muchas cuentas». COUNT(DISTINCT usuario) cuenta cada usuario una sola vez por grupo, aunque haya aparecido muchas veces. Dos orígenes pueden tener el mismo número de intentos y tener una forma de comportamiento muy diferente.
Compara la consulta de usuarios distintos por origen con la anterior. Fíjate en la columna usuarios_distintos, no en intentos.
Responde para continuar
Escribe el origen que probó más usuarios distintos con fallos.
Ver pista de ayuda
Ordena mentalmente la consulta por `usuarios_distintos` y toma el origen de la primera fila.
Hay dos momentos para filtrar. WHERE actúa sobre las filas antes de agrupar; HAVING actúa sobre los grupos ya formados, y por eso puede usar resultados de agregación, como el número de filas del grupo. Un filtro por «cinco o más fallos» no se puede escribir en el WHERE, porque en ese momento el conteo todavía no existe.
Abre la consulta de usuarios con cinco o más fallos y fíjate en dónde está cada condición.
Responde para continuar
En la consulta de usuarios con cinco o más fallos, ¿por qué esa condición va en `HAVING`?
Para encontrar valores de una tabla que no tienen pareja en otra se usa un LEFT JOIN seguido de una condición IS NULL sobre la columna de la tabla de la derecha. El LEFT JOIN conserva todas las filas de la izquierda; donde no hay pareja, las columnas de la derecha quedan vacías. Esa ausencia es lo que se busca.
En detección, la pregunta tiene un valor concreto: un usuario que inicia sesión y no tiene cuenta registrada puede ser una cuenta de servicio olvidada, un directorio sin sincronizar o algo que alguien debe explicar.
Abre la consulta que cruza eventos_auth con cuentas.
Responde para continuar
Escribe el usuario que aparece en los eventos y no tiene cuenta registrada.
Ver pista de ayuda
El resultado de la consulta de cruce tiene una sola fila; compara también con la tabla `cuentas`.
COUNT(*) cuenta filas. COUNT(columna) cuenta solo las filas en las que esa columna tiene valor; los vacíos (NULL) no suman. Es una diferencia pequeña que cambia cifras sin dar ningún error: dos conteos sobre la misma tabla pueden dar números distintos y ambos ser correctos.
Abre la consulta de conteos y compara sus dos números con la tabla.
Responde para continuar
La consulta de conteos devuelve dos cifras distintas sobre la misma tabla. ¿Qué lectura es correcta?
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.