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
- A) Un ejemplo de caso general
- B) Uso de MAYÚSCULAS y minúsculas con una función agregada ejemplo
- 2) Expresión de caso SIMPLE de PostgreSQL
- A) Ejemplo de expresión de caso simple de PostgreSQL
- B) Uso de expresión de caso simple de PostgreSQL con ejemplo de función agregada
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