PostgreSQL CASE

Resumen: en este tutorial, aprenderá a usar la expresión condicional PostgreSQL CASE para formar consultas condicionales.

La expresión PostgreSQL CASE es la misma que la instrucción IF/ELSE en otros lenguajes de programación. Le permite agregar lógica if-else a la consulta para formar una consulta potente.

Dado que CASE es una expresión, puede usarla en cualquier lugar donde se pueda usar una expresión, p. ej.,SELECT, WHERE, GROUP BY, y la cláusula HAVING.

La expresión CASE tiene dos formas: forma general y forma simple.

1) Expresión de caso general de PostgreSQL

Lo siguiente ilustra la forma general de la instrucción CASE :

Code language: SQL (Structured Query Language) (sql)

En esta sintaxis, cada condición (condition_1, condition_2…) es una expresión booleana que devuelve true o false.

Cuando una condición se evalúa como false, la expresión CASE evalúa la siguiente condición de arriba a abajo hasta que encuentra una condición que se evalúa como true.

Si una condición se evalúa como true, la expresión CASE devuelve el resultado correspondiente que sigue a la condición. Por ejemplo, si condition_2 se evalúa como true, la expresión CASE devuelve result_2. Además, inmediatamente deja de evaluar la siguiente expresión.

En caso de que todas las condiciones se evalúen a false, la expresión CASE devuelve el resultado (else_result) que sigue a la palabra clave ELSE. Si omite la cláusula ELSE, la expresión CASE devuelve NULL.

Echemos un vistazo a la tabla film de la base de datos de muestra.

A) Un ejemplo de caso general

Supongamos que desea etiquetar las películas por su longitud según la siguiente lógica:

  • Si la duración es inferior a 50 minutos, la película es corta.
  • Si la duración es superior a 50 minutos e inferior o igual a 120 minutos, la película es mediana.
  • Si la duración es superior a 120 minutos, la película es larga.

Para aplicar esta lógica, puede usar la expresión CASE en la instrucción SELECT de la siguiente manera:

Code language: PHP (php)

Producto:

Tenga en cuenta que colocamos un alias de columna duration después de la expresión CASE.

B) Uso de MAYÚSCULAS y minúsculas con una función agregada ejemplo

Supongamos que desea asignar segmentos de precio a películas con la siguiente lógica:

  • Si la tarifa de alquiler es de 0,99, la película es económica.
  • Si la tarifa de alquiler es 1.99, la película es masiva.
  • Si la tarifa de alquiler es de 4,99, la película es premium.

Y quieres saber el número de películas que pertenecen a economy, mass y premium.

En este caso, puede usar la expresión CASE para construir la consulta de la siguiente manera:

Code language: SQL (Structured Query Language) (sql)

El resultado de la consulta es el siguiente:

En este ejemplo, usamos la expresión CASE para devolver 1 o 0 si la tarifa de alquiler cae en cada segmento de precio. Y aplicamos la función SUM para calcular el total de películas para cada segmento de precio.

2) Expresión de caso SIMPLE de PostgreSQL

PostgreSQL proporciona otra forma de la expresión CASE llamada forma simple de la siguiente manera:

Code language: SQL (Structured Query Language) (sql)

El CASE evalúa primero el expression y compara el resultado con cada valor( value_1, value_2, …) en las cláusulas WHEN secuencialmente hasta que encuentre la coincidencia.

Una vez que el resultado de expression es igual a un valor (value1, value2, etc.) en una cláusula WHEN, CASE devuelve el resultado correspondiente en la cláusula THEN.

Si CASE no encuentra ninguna coincidencia, devuelve el valor else_result que sigue al valor ELSE, o NULL si el valor ELSE no está disponible.

A) Ejemplo de expresión de caso simple de PostgreSQL

La siguiente instrucción utiliza la expresión CASE para agregar la descripción de calificación a la salida:

Code language: PHP (php)

En este ejemplo, usamos una expresión simple CASE para comparar la calificación de la tabla film con algunos valores literales como G, PG, NC17, PG – 13 y devolver la descripción de calificación correspondiente.

B) Uso de expresión de caso simple de PostgreSQL con ejemplo de función agregada

La siguiente instrucción utiliza expresión CASE con la función SUM para calcular el número de películas en cada clasificación:

Code language: PHP (php)

En este tutorial, ha aprendido a usar la expresión PostgreSQL CASE para formar consultas complejas.

  • ¿Fue útil este tutorial ?
  • YesNo

Deja una respuesta

Tu dirección de correo electrónico no será publicada.