Las expresiones condicionales en SQL permiten realizar operaciones basadas en condiciones específicas. Estas expresiones son útiles para tomar decisiones dentro de una consulta y pueden simplificar la lógica de tus consultas SQL. En este tema, cubriremos las siguientes expresiones condicionales:

  1. CASE
  2. IF
  3. COALESCE
  4. NULLIF

  1. CASE

La expresión CASE es una estructura de control que permite evaluar una lista de condiciones y devolver un valor específico cuando se cumple la primera condición verdadera.

Sintaxis

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE resultN
END

Ejemplo

Supongamos que tenemos una tabla employees con las siguientes columnas: employee_id, name, salary, y department_id. Queremos clasificar a los empleados según su salario.

SELECT
    employee_id,
    name,
    salary,
    CASE
        WHEN salary > 100000 THEN 'High'
        WHEN salary BETWEEN 50000 AND 100000 THEN 'Medium'
        ELSE 'Low'
    END AS salary_category
FROM employees;

Explicación

  • CASE evalúa cada condición en orden.
  • Si salary es mayor que 100000, devuelve 'High'.
  • Si salary está entre 50000 y 100000, devuelve 'Medium'.
  • Si ninguna de las condiciones anteriores se cumple, devuelve 'Low'.

  1. IF

La función IF es una expresión condicional que devuelve un valor si una condición es verdadera y otro valor si es falsa. Es más común en MySQL.

Sintaxis

IF(condition, value_if_true, value_if_false)

Ejemplo

Queremos etiquetar a los empleados como 'Senior' si su salario es mayor a 80000, de lo contrario, 'Junior'.

SELECT
    employee_id,
    name,
    salary,
    IF(salary > 80000, 'Senior', 'Junior') AS position
FROM employees;

Explicación

  • IF evalúa la condición salary > 80000.
  • Si la condición es verdadera, devuelve 'Senior'.
  • Si la condición es falsa, devuelve 'Junior'.

  1. COALESCE

La función COALESCE devuelve el primer valor no nulo de una lista de expresiones.

Sintaxis

COALESCE(expression1, expression2, ..., expressionN)

Ejemplo

Queremos mostrar el nombre del departamento de los empleados, pero si el nombre del departamento es nulo, mostrar 'Unknown'.

SELECT
    employee_id,
    name,
    salary,
    COALESCE(department_name, 'Unknown') AS department_name
FROM employees;

Explicación

  • COALESCE evalúa cada expresión en orden.
  • Devuelve el primer valor no nulo encontrado.
  • Si department_name es nulo, devuelve 'Unknown'.

  1. NULLIF

La función NULLIF compara dos expresiones y devuelve NULL si son iguales; de lo contrario, devuelve la primera expresión.

Sintaxis

NULLIF(expression1, expression2)

Ejemplo

Queremos evitar mostrar el salario como 0, en su lugar, mostrar NULL.

SELECT
    employee_id,
    name,
    NULLIF(salary, 0) AS salary
FROM employees;

Explicación

  • NULLIF compara salary con 0.
  • Si salary es 0, devuelve NULL.
  • Si salary no es 0, devuelve el valor de salary.

Ejercicios Prácticos

Ejercicio 1

Dada la tabla students con las columnas student_id, name, y grade, clasifica a los estudiantes en 'Pass' o 'Fail' según su calificación. Una calificación mayor o igual a 50 es 'Pass', de lo contrario, 'Fail'.

SELECT
    student_id,
    name,
    grade,
    CASE
        WHEN grade >= 50 THEN 'Pass'
        ELSE 'Fail'
    END AS result
FROM students;

Ejercicio 2

Usa la función COALESCE para mostrar el nombre del supervisor de los empleados. Si el nombre del supervisor es nulo, muestra 'No Supervisor'.

SELECT
    employee_id,
    name,
    COALESCE(supervisor_name, 'No Supervisor') AS supervisor_name
FROM employees;

Ejercicio 3

Utiliza la función NULLIF para evitar mostrar el valor 0 en la columna bonus. Si el valor es 0, debe mostrarse como NULL.

SELECT
    employee_id,
    name,
    NULLIF(bonus, 0) AS bonus
FROM employees;

Conclusión

Las expresiones condicionales en SQL son herramientas poderosas que permiten realizar operaciones basadas en condiciones específicas. En este módulo, hemos cubierto las expresiones CASE, IF, COALESCE y NULLIF, proporcionando ejemplos prácticos y ejercicios para reforzar los conceptos aprendidos. Con estas herramientas, puedes escribir consultas más dinámicas y adaptativas, mejorando la flexibilidad y funcionalidad de tus bases de datos SQL.

Curso de SQL

Módulo 1: Introducción a SQL

Módulo 2: Consultas básicas de SQL

Módulo 3: Trabajando con múltiples tablas

Módulo 4: Filtrado avanzado de datos

Módulo 5: Manipulación de datos

Módulo 6: Funciones avanzadas de SQL

Módulo 7: Subconsultas y consultas anidadas

Módulo 8: Índices y optimización de rendimiento

Módulo 9: Transacciones y concurrencia

Módulo 10: Temas avanzados

Módulo 11: SQL en la práctica

Módulo 12: Proyecto final

© Copyright 2024. Todos los derechos reservados