2. LENGUAJE DE MANIPULACIÓN DE DATOS (DML, DATA MANAGEMENT LANGUAGE).

2.4. USO DEL OPERADOR BETWEEN EN SQL

En lecciones anteriores se explicó cómo utilizar la cláusula WHERE junto con el operador OR para filtrar datos según múltiples condiciones. En este módulo, exploraremos una forma más concisa y eficiente de aplicar filtros dentro de un rango: el operador BETWEEN.

¿Qué es el operador BETWEEN?

El operador BETWEEN es un operador lógico que permite seleccionar valores dentro de un rango determinado. Este rango puede aplicarse a números, fechas o incluso valores de texto. Para funcionar correctamente, BETWEEN debe combinarse con el operador AND.

Sintaxis básica:

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN valor_inicial AND valor_final;

Nota: El operador BETWEEN es inclusivo, lo que significa que los valores extremos sí están incluidos en los resultados.

Ejemplo aplicado:

Supongamos que un periodista está elaborando un informe sobre los medallistas de oro en los Juegos Olímpicos entre los años 2000 y 2010. Podría usar la siguiente consulta:

SELECT * FROM medallas
WHERE tipo = 'ORO'
AND anio BETWEEN 2000 AND 2010;

Esta consulta devolverá todos los registros de medallas de oro ganadas entre los años 2000 y 2010, incluyendo ambos años.

¿Por qué usar BETWEEN y no múltiples OR?

Podríamos escribir la misma consulta de una manera más extensa utilizando OR, así:

SELECT * FROM medallas
WHERE tipo = 'ORO'
AND (anio = 2000 OR anio = 2004 OR anio = 2008);

Aunque esta forma es válida, el uso de BETWEEN es más conciso, legible y eficiente, especialmente cuando el rango es amplio.

¿Es BETWEEN inclusivo?

Sí, en SQL el operador BETWEEN incluye los límites del rango. Por ejemplo:

SELECT * FROM product_sales
WHERE price BETWEEN 10000 AND 20000;

Esta consulta seleccionará productos con precios mayores o iguales a 10.000 y menores o iguales a 20.000.

En contraste, si quisieras excluir el valor mínimo, deberías usar:

SELECT * FROM product_sales
WHERE price > 10000
AND price <= 20000;

Ambas consultas son correctas, pero producen resultados distintos por la inclusión o exclusión de los límites.

Ejercicio de práctica – SQL BETWEEN

Escenario:

Eres un analista de datos en TechStore, y deseas analizar la venta de medicamentos por parte de diferentes fabricantes.

Objetivo:

Utiliza el operador BETWEEN para consultar todos los medicamentos que:

  • Se hayan vendido en cantidades entre 100.000 y 105.000 unidades, y
  • Hayan sido fabricados por Biogen, AbbVie o Eli Lilly.
  • Consulta esperada:

    SELECT * FROM ventas_medicamentos
    WHERE unidades BETWEEN 100000
    AND 105000
    AND fabricante IN ('Biogen', 'AbbVie', 'Eli Lilly');

    Salida esperada:


    fabricante medicamento unidades
    AbbVie Lidocaína Hidrocloruro + Epinefrina 101102
    AbbVie Hidralazina Hidrocloruro 104368
    Biogen Quetiapina Fumarato 103246
    Eli Lilly Androgel 102027

    Ejercicio de práctica de SQL

    Problemas de la práctica

    Encuentre todos los medicamentos que vendieron entre 100mil y 105k unidades, fabricados por Biogen, AbbVie o Eli Lilly.

    Ejercicio #1

    Contexto: Uso de BETWEEN, AND, OR y WHERE

    Imagina que eres un analista de datos que trabaja para CVS Pharmacy y tienes acceso a la base de datos de ventas de medicamentos. Tu objetivo es identificar ciertos medicamentos que cumplan con condiciones específicas de ventas y fabricante.

    Requerimiento:

    Utiliza el operador BETWEEN junto con las cláusulas WHERE, AND y OR para consultar información sobre los medicamentos:

    1. Que hayan vendido entre 100.000 y 105.000 unidades, y

    2. Que hayan sido fabricados por alguno de los siguientes laboratorios: Biogen, AbbVie o Eli Lilly.

    La consulta debe mostrar los siguientes campos:

    * Fabricante

    * Nombre del Medicamento

    * Unidades Vendidas

    Sugerencia profesional:

    Este ejercicio requiere comprender cómo combinar condiciones múltiples en una consulta SQL. Si se te dificulta, intenta escribir primero la condición del rango con BETWEEN, y luego añade las condiciones del fabricante utilizando OR. Tambien se recomienda usar los operadores vistos en los tutoriales anteriores OR, AND, y WHERE.

    Estructura de la tabla:

    columna tipodato
    prod_id INTEGER
    unidades INTEGER
    ventastotales INTEGER
    descuentos NUMERIC
    fabricante TEXT
    drogas TEXT

    Datos de ejemplo:

    prod_id unidades ventastotales descuentos fabricante drogas
    1 120 2400.50 150.00 PharmaPlus Paracetamol 500mg
    2 80 3200.00 200.00 BioSalud Ibuprofeno 400mg
    3 50 1250.75 75.50 MediCare Amoxicilina 500mg
    4 200 5000.00 300.00 SaludVida Vitamina C 1g
    5 150 3750.00 250.00 PharmaPlus Omeprazol 20mg
    6 90 2700.40 180.00 BioSalud Loratadina 10mg
    7 60 1800.00 120.00 MediCare Diclofenaco 50mg
    8 40 1600.00 100.00 SaludVida Azitromicina 500mg
    9 37410 293452 208876.01 Eli Lilly Zyprexa
    10 75 1875.50 90.00 BioSalud Losartán 50mg
    34 94698 600997.19 521182.16 AstraZeneca Surmontil
    61 77023 500101.61 419174.97 Biogená Alivio varicose
    136 144814 1084258 1006447.73 Biogená Burkhart


    -------------------------------------------------------------------------------------------------------------

    SIGUIENTE - SQL IN