Expresiones CASE en SELECT
Escriba lógica condicional en línea y conozca las formas CASE simple y buscada
Expresiones CASE en SELECT es una lección gratuita de Coding Interview Prep en CoddyKit. Esta es la lección 4 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 Coding Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Coding Interview Prep incluye 4 lecciones en total.
CASE: la expresión condicional de SQL
CASE es el if/then/else de SQL, pero es una expresión que devuelve un único valor, por lo que funciona en cualquier lugar donde pueda usarse un valor: SELECT, WHERE, ORDER BY e incluso dentro de agregaciones.
SELECT order_id,
amount,
CASE WHEN amount > 100 THEN 'large' ELSE 'small' END AS size
FROM orders;Forma de CASE buscado
El CASE buscado comprueba una condición booleana en cada WHEN y devuelve la primera coincidencia. Es la forma más flexible y el orden importa: gana la primera condición verdadera.
SELECT score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'F'
END AS grade
FROM exam_results;Forma simple de CASE
El CASE simple compara una expresión con una lista de valores. Es más breve para las comprobaciones de igualdad, pero no puede manejar rangos ni pruebas con NULL.
SELECT status_code,
CASE status_code
WHEN 1 THEN 'active'
WHEN 2 THEN 'paused'
WHEN 3 THEN 'closed'
ELSE 'unknown'
END AS status_label
FROM accounts;CASE buscado frente a CASE simple: cuándo usar cada uno
Use CASE simple para comparar con valores fijos y CASE buscado para rangos o NULL. La trampa clave es que un CASE simple nunca puede coincidir con NULL: use IS NULL en una forma buscada.
-- Simple CASE will NOT catch NULL here
SELECT CASE WHEN bonus IS NULL THEN 'no bonus'
ELSE 'has bonus'
END AS bonus_flag
FROM employees;El orden de las ramas WHEN es importante
Como gana la primera rama que coincide, ordene los WHEN de la condición más específica a la menos específica. Si coloca primero un umbral demasiado general, una puntuación de 95 quedará mal etiquetada.
-- Correct order: highest threshold first
SELECT CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
ELSE 'C or below'
END AS grade
FROM exam_results;ELSE y el NULL implícito
Si no coincide nada y omite ELSE, CASE devuelve NULL. Añada un ELSE explícito para indicar el valor predeterminado y evitar que los valores inesperados se conviertan silenciosamente en NULL.
-- No ELSE: anything not 1/2 becomes NULL
SELECT CASE flag WHEN 1 THEN 'yes' WHEN 2 THEN 'no' END AS label
FROM toggles;Agregación condicional (patrón de tabla dinámica)
El truco más valioso en una entrevista: la agregación condicional. Incluya CASE dentro de SUM o COUNT para contar filas por categoría en una sola pasada: un informe ordenado al estilo de una tabla dinámica.
SELECT
SUM(CASE WHEN status = 'paid' THEN 1 ELSE 0 END) AS paid_orders,
SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) AS pending_orders,
SUM(CASE WHEN status = 'paid' THEN amount ELSE 0 END) AS paid_revenue
FROM orders;COUNT ignora NULL: un atajo con CASE
Como COUNT ignora NULL, puede omitir ELSE para que las filas que no coinciden se conviertan en NULL y no se cuenten. Es una forma algo más breve de realizar un conteo condicional.
SELECT
COUNT(CASE WHEN status = 'paid' THEN 1 END) AS paid_orders,
COUNT(CASE WHEN status = 'pending' THEN 1 END) AS pending_orders
FROM orders;CASE en ORDER BY para una ordenación personalizada
Coloque CASE en ORDER BY para ordenar según una prioridad personalizada en lugar de seguir un orden alfabético o numérico simple, como mostrar lo urgente antes de lo normal y de todo lo demás.
SELECT order_id, status
FROM orders
ORDER BY
CASE status
WHEN 'urgent' THEN 1
WHEN 'normal' THEN 2
ELSE 3
END,
order_id;Coherencia de tipos entre ramas
Todas las ramas de un CASE deben devolver un tipo compatible. Mezclar un número y una cadena puede producir un error u obligar a una conversión; elija un único tipo de salida y haga la conversión explícitamente si es necesario.
-- Keep branches the same type
SELECT CASE WHEN qty > 0 THEN CAST(qty AS VARCHAR)
ELSE 'none'
END AS qty_label
FROM inventory;CASE en WHERE para filtrado condicional
CASE en WHERE permite aplicar una lógica de filtrado diferente según un indicador, como un umbral de precio distinto para cada región. A menudo resulta más claro que una maraña de AND y OR.
SELECT order_id, amount, region
FROM orders
WHERE amount > CASE region
WHEN 'US' THEN 100
WHEN 'EU' THEN 90
ELSE 50
END;Comprobación rápida
Prediga el resultado.
Resumen
Resumen: CASE devuelve un único valor y funciona en SELECT, WHERE, ORDER BY y en las agregaciones. El CASE buscado permite manejar rangos y NULL; gana la primera coincidencia; si no hay coincidencias, devuelve NULL; mantenga compatibles los tipos de las ramas.
Preguntas frecuentes
¿La lección «Expresiones CASE en SELECT» es gratis?
Sí — el texto completo de «Expresiones CASE en SELECT» 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 Coding Interview Prep, actualiza a CoddyKit PRO. El curso de Coding Interview Prep incluye 4 lecciones en total.
¿Qué aprenderé en «Expresiones CASE en SELECT»?
Escriba lógica condicional en línea y conozca las formas CASE simple y buscada Practicas Coding Interview Prep 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 Coding Interview Prep?
No se requiere experiencia previa. Coding Interview Prep 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 4 de 4.
¿Cuánto tiempo toma la lección «Expresiones CASE en SELECT»?
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 Coding Interview Prep?
Sí. Cada lección de Coding Interview Prep 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
- Proyección de columnas y problemas con los alias
- Columnas calculadas y precedencia de expresiones
- DISTINCT frente a GROUP BY para obtener valores únicos
- Expresiones CASE en SELECT