Lecciones del módulo (1/4)
Listas y rangos: IN y BETWEEN
En los módulos anteriores filtraste con WHERE usando igualdades y
comparaciones: salary > 30000, department_id = 1, hired_on >= '2020-01-01'.
Pero cuando la condición se convierte en "el valor debe ser uno de estos cinco",
Los OR encadenados se acumulan:
-- Heavy and fragile: adding a department means touching the query
SELECT first_name, last_name
FROM employees
WHERE department_id = 1
OR department_id = 2
OR department_id = 3;SQL ofrece dos atajos para que esto sea legible.
IN — "uno de estos"
El operador IN (...) toma una lista de valores y devuelve true si el
columna es igual a cualquiera de ellos:
SELECT first_name, last_name, department_id
FROM employees
WHERE department_id IN (1, 2, 3);Es semánticamente idéntico al OR anterior, pero mucho más legible:
se lee naturalmente como "donde department_id está en (1, 2, 3)". También funciona
con cadenas y fechas:
SELECT name
FROM departments
WHERE city IN ('Milano', 'Roma');También existe NOT IN (...), que hace lo contrario:
-- Employees who are NOT in Engineering or Sales:
SELECT first_name, last_name
FROM employees
WHERE department_id NOT IN (1, 2);ENTRE — "entre A y B, ambos inclusive"
Cuando la condición es un rango continuo (números, fechas), en lugar de
escribiendo column >= A AND column <= B tienes BETWEEN A AND B:
-- Employees with a salary between 30000 and 50000 (both inclusive):
SELECT first_name, last_name, salary
FROM employees
WHERE salary BETWEEN 30000 AND 50000;BETWEEN es inclusivo en ambos puntos finales. Funciona muy bien con
fechas también:
-- Everyone hired in 2020:
SELECT first_name, last_name, hired_on
FROM employees
WHERE hired_on BETWEEN '2020-01-01' AND '2020-12-31';Pruébalo
Muestra el nombre (first_name), el apellido (last_name) y el salario (salario) de los empleados con un salario entre 30000 y 50000 inclusive. Tres columnas.
Mostrar pista
Utilice ENTRE 30000 Y 50000: más compacto y legible que dos comparaciones unidas por AND.
Solución disponible después de 3 intentos
Ejercicio de revisión
Enumere el nombre (first_name) y el apellido (last_name) de los empleados que trabajan en los departamentos 1, 2 o 4 (use IN). Ordenar alfabéticamente por apellido.
Mostrar pista
DONDE depart_id IN (1, 2, 4) es la versión compacta de tres OR.
Solución disponible después de 3 intentos