SQL

Test de SQL: filtros y condiciones

Practica 50 casos de PostgreSQL sobre WHERE, comparaciones, lógica booleana, NULL, patrones, rangos y subconsultas.

Cada intento mezcla preguntas y respuestas para evitar patrones memorizables.

Cargando preguntas…

Qué vas a practicar

Este banco trabaja filtros dentro de consultas reales: comparaciones, AND, OR y NOT, valores NULL, BETWEEN, IN, LIKE, expresiones regulares y subconsultas. Cada caso pide decidir qué filas pasan el filtro o detectar una condición defectuosa.

  • Construir condiciones simples y compuestas.
  • Distinguir igualdad, rangos, listas y patrones.
  • Evitar errores con NULL, NOT IN y precedencia lógica.
  • Aplicar EXISTS, ANY, ALL y filtros temporales robustos.

Preguntas de ejemplo

Los ejemplos siguientes pertenecen al banco interactivo y conservan exactamente la misma respuesta y explicación.

1¿Qué cláusula filtra filas antes de construir la salida de SELECT?

Respuesta: WHERE

Explicación: WHERE elimina las filas cuya condición no resulta verdadera antes de la selección final y de la agrupación. WHERE actúa sobre filas individuales antes de GROUP BY, mientras que HAVING se reserva para grupos ya agregados.

2¿Cómo se seleccionan filas cuyo correo sí está informado?

Respuesta: WHERE correo IS NOT NULL

Explicación: IS NOT NULL es verdadero cuando la expresión contiene un valor no nulo. NULL no es un valor concreto, por lo que = NULL y <> NULL no expresan la condición pretendida.

3Para obtener exactamente ese conjunto, ¿qué filtro es robusto para todas las marcas de tiempo del día 2026-08-02?

Respuesta: WHERE creado >= TIMESTAMP '2026-08-02 00:00:00' AND creado < TIMESTAMP '2026-08-03 00:00:00'

Explicación: El intervalo semiabierto incluye el inicio del día y excluye exactamente el inicio del siguiente, sin depender de la precisión fraccionaria. En marcas de tiempo suele preferirse un intervalo semiabierto —desde el inicio incluido hasta el siguiente inicio excluido— para no perder fracciones de segundo.

4Quieres conservar solo nombres cuya longitud supere diez caracteres. ¿Qué condición expresa ese filtro?

Respuesta: WHERE length(nombre) > 10

Explicación: La función length calcula caracteres y su resultado numérico puede compararse en WHERE. Aplicar una función a la columna puede impedir el uso directo de un índice convencional; un rango equivalente suele ser más eficiente.

5Para obtener exactamente ese conjunto, ¿qué filtro selecciona categorías distintas de 'archivo' y además excluye NULL?

Respuesta: WHERE categoria <> 'archivo'

Explicación: La comparación <> solo resulta verdadera para valores conocidos distintos; las filas con NULL producen UNKNOWN y quedan fuera. La comparación devuelve true, false o unknown si interviene NULL; no debe confundirse con una asignación.

6En PostgreSQL quieres encontrar 'sql' en cualquier parte del título sin distinguir mayúsculas. ¿Qué condición corresponde?

Respuesta: WHERE titulo ILIKE '%sql%'

Explicación: ILIKE combina la coincidencia por patrón con comparación sin distinción de mayúsculas. LIKE mantiene la sensibilidad habitual, por lo que ambas opciones no son equivalentes.

Cómo aprovechar la práctica

Evalúa la condición como una expresión booleana y recuerda que SQL utiliza lógica de tres valores. Revisa paréntesis, precedencia, tratamiento de NULL y alcance del patrón antes de escoger la respuesta.

Fuentes y alcance

Las preguntas se han revisado con la documentación oficial vigente de PostgreSQL 18.4 sobre SELECT, expresiones de tabla y coincidencia de patrones. Revisión técnica: 19 de agosto de 2026.

Documentación consultada: PostgreSQL 18.4: SELECT · PostgreSQL 18.4: Table Expressions · PostgreSQL 18.4: Pattern Matching