Menu
Coddy logo textTech

CASE WHEN

Parte de la sección Más allá de lo básico del Journey de SQL de Coddy — lección 1 de 27.

Una expresión CASE es un if/else if/else para SQL. Vive dentro de SELECT (o ORDER BY, o WHERE) y produce un valor por fila.

SELECT name,
       CASE
           WHEN score >= 90 THEN 'A'
           WHEN score >= 75 THEN 'B'
           WHEN score >= 60 THEN 'C'
           ELSE 'F'
       END AS grade
FROM students

Cada WHEN se comprueba de arriba hacia abajo; la primera coincidencia gana. El ELSE es opcional. Sin él, las filas que no coinciden obtienen NULL.

Termina siempre con END y asigna un nombre a la columna con AS.

challenge icon

Desafío

Fácil

Tablas y columnas disponibles:

  • <strong>employees</strong>: <strong>id</strong>, <strong>name</strong>, <strong>department</strong>, <strong>salary</strong>

Para cada empleado, devuelve su name, department y una columna tier construida de la siguiente manera:

  • 'partner' cuando salary >= 150000 (cualquier departamento)
  • 'senior' cuando department = 'eng' y salary >= 100000
  • 'mid' cuando salary >= 60000
  • 'entry' de lo contrario

Ordena por salary de forma descendente. Ten en cuenta que el orden de las ramas WHEN importa: la primera coincidencia es la que prevalece.

Hoja de referencia

CASE actúa como un if/else dentro de SELECT, produciendo un valor por fila:

SELECT name,
       CASE
           WHEN score >= 90 THEN 'A'
           WHEN score >= 75 THEN 'B'
           ELSE 'F'
       END AS grade
FROM students
  • Las condiciones se comprueban de arriba hacia abajo; la primera coincidencia gana
  • ELSE es opcional; sin él, las filas que no coincidan devuelven NULL
  • Cierra siempre con END; usa AS para nombrar la columna

Pruébalo tú mismo

SELECT name, department,
       -- nivel con múltiples ramas WHEN que mezclan salary y department
FROM employees
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Más allá de lo básico