0Pricing
SQL Academy · Lección

Agrupación y etiquetado de datos

Convierta valores en categorías

Agrupación y etiquetado de datos es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué es la agrupación por categorías?

La agrupación por categorías consiste en agrupar valores sin procesar en categorías con nombre: convertir números, fechas o códigos en etiquetas comprensibles.

En lugar de mostrar una puntuación de 87, muestra "Buena". En lugar de mostrar una edad de 14 años, muestra "Adolescente". La expresión CASE es su herramienta principal para hacerlo.

Tabla de ejemplo: pedidos

Usaremos una tabla de orders durante toda esta lección. Cada fila contiene el importe de un pedido y un código de estado.

Ejecute la consulta siguiente para ver los datos con los que trabajaremos.

SELECT id, customer, amount, status
FROM orders
ORDER BY id;

Asignar etiquetas con CASE WHEN

El patrón más sencillo de agrupación por categorías comprueba una condición y asigna una etiqueta. El bloque CASE WHEN ... THEN ... ELSE ... END devuelve una cadena nueva para cada fila.

Aquí etiquetamos cada pedido como 'Grande' o 'Pequeño' según su importe.

SELECT id,
       amount,
       CASE
         WHEN amount >= 500 THEN 'Large'
         ELSE 'Small'
       END AS order_size
FROM orders;

Varias categorías con cadenas de WHEN

Puede añadir tantas cláusulas WHEN como necesite. SQL las comprueba de arriba abajo y se detiene en la primera coincidencia.

Este ejemplo divide los importes en tres categorías: Pequeño, Mediano y Grande.

SELECT id,
       amount,
       CASE
         WHEN amount < 100  THEN 'Small'
         WHEN amount < 500  THEN 'Medium'
         ELSE 'Large'
       END AS order_tier
FROM orders;

Agrupar valores de texto por categorías

Las categorías no se limitan a los números. Puede hacer coincidir valores de texto exactos y reemplazarlos por etiquetas más claras.

Aquí, los códigos de estado sin procesar 'P', 'S' y 'C' se convierten en palabras comprensibles.

SELECT id,
       status,
       CASE status
         WHEN 'P' THEN 'Pending'
         WHEN 'S' THEN 'Shipped'
         WHEN 'C' THEN 'Cancelled'
         ELSE 'Unknown'
       END AS status_label
FROM orders;

Usar la forma CASE simple

Cuando compara una columna con varios valores fijos, la forma CASE simple (CASE column WHEN value ...) es más corta y fácil de leer que repetir el nombre de la columna en cada cláusula WHEN.

El resultado es idéntico al de la forma buscada.

SELECT id,
       CASE status
         WHEN 'P' THEN 'Pending'
         WHEN 'S' THEN 'Shipped'
         WHEN 'C' THEN 'Cancelled'
         ELSE 'Unknown'
       END AS status_label
FROM orders;

Agrupar por categorías dentro de GROUP BY

Una vez que tenga una etiqueta de categoría, puede agrupar por ella para contar cuántas filas pertenecen a cada categoría. Coloque toda la expresión CASE dentro de GROUP BY.

Esta consulta muestra cuántos pedidos son Pequeños, Medianos o Grandes.

SELECT
  CASE
    WHEN amount < 100  THEN 'Small'
    WHEN amount < 500  THEN 'Medium'
    ELSE 'Large'
  END AS order_tier,
  COUNT(*) AS total_orders
FROM orders
GROUP BY
  CASE
    WHEN amount < 100  THEN 'Small'
    WHEN amount < 500  THEN 'Medium'
    ELSE 'Large'
  END;

Agrupar por categorías con un alias de subconsulta

Repetir un bloque CASE largo en GROUP BY resulta verboso. Un enfoque más limpio consiste en envolver la consulta principal en una subconsulta (o CTE) para poder hacer referencia directamente al alias.

SELECT order_tier, COUNT(*) AS total_orders
FROM (
  SELECT
    CASE
      WHEN amount < 100  THEN 'Small'
      WHEN amount < 500  THEN 'Medium'
      ELSE 'Large'
    END AS order_tier
  FROM orders
) AS bucketed
GROUP BY order_tier;

Categorías numéricas: grupos de edad

Agrupar por edad es un caso de uso clásico de la agrupación por categorías. La consulta siguiente asigna cada cliente a un grupo de edad con nombre.

Observe que las condiciones van de menor a mayor: SQL se detiene en el primer WHEN que sea verdadero, por lo que el orden es importante.

SELECT name,
       age,
       CASE
         WHEN age < 13 THEN 'Child'
         WHEN age < 18 THEN 'Teen'
         WHEN age < 65 THEN 'Adult'
         ELSE 'Senior'
       END AS age_group
FROM customers;

Asignar etiquetas a los NULL en una categoría

Si un valor es NULL, ninguna condición WHEN (salvo IS NULL) coincidirá con él. Sin una comprobación explícita, los NULL pasan a la rama ELSE.

Añada una cláusula WHEN column IS NULL para asignar a los NULL su propia etiqueta.

SELECT id,
       amount,
       CASE
         WHEN amount IS NULL THEN 'No Data'
         WHEN amount < 100   THEN 'Small'
         WHEN amount < 500   THEN 'Medium'
         ELSE 'Large'
       END AS order_tier
FROM orders;

Agrupar por categorías en ORDER BY

También puede usar una expresión CASE directamente dentro de ORDER BY para controlar la prioridad de ordenación sin añadir una columna nueva.

El ejemplo siguiente muestra siempre primero los pedidos Pendientes, después los Enviados y, por último, los Cancelados.

SELECT id, customer, status
FROM orders
ORDER BY
  CASE status
    WHEN 'P' THEN 1
    WHEN 'S' THEN 2
    WHEN 'C' THEN 3
    ELSE 4
  END;

Comprobación rápida

Compruebe su comprensión de la agrupación por categorías y la asignación de etiquetas con CASE.

Repaso de la lección

¡Excelente trabajo! Esto es lo que aprendió sobre la agrupación por categorías y la asignación de etiquetas:

  • La agrupación por categorías transforma valores sin procesar en categorías con nombre mediante CASE WHEN.
  • Las cadenas de cláusulas WHEN crean varias categorías; SQL se detiene en la primera coincidencia.
  • La forma CASE simple (CASE col WHEN val) es ideal para comparar una columna con valores fijos.
  • Puede usar una expresión CASE en GROUP BY para contar las filas de cada categoría.
  • Gestione siempre los valores NULL explícitamente con WHEN col IS NULL para asignarles una etiqueta significativa.
  • CASE también funciona dentro de ORDER BY para definir una prioridad de ordenación personalizada.

La agrupación por categorías hace que los informes sean mucho más fáciles de leer, ya que reemplaza códigos y números sin procesar por etiquetas claras y descriptivas.

Preguntas frecuentes

¿La lección «Agrupación y etiquetado de datos» es gratis?

Sí — el texto completo de «Agrupación y etiquetado de datos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Agrupación y etiquetado de datos»?

Convierta valores en categorías Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Academy?

No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Agrupación y etiquetado de datos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Academy?

Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. La expresión CASE
  2. CASE buscado frente a CASE simple
  3. Agrupación y etiquetado de datos
  4. CASE en ORDER BY y agregaciones
← Volver a SQL Academy