PostgreSQL – 案例
PostgreSQL 有一个名为 CASE 的条件表达式来形成条件查询。 PostgreSQL CASE 表达式与其他编程语言中的 IF/ELSE 语句相同。 PostgreSQL 提供了两种形式的 CASE 表达式。
Syntax:
CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
[WHEN ...]
[ELSE result_n]
END
例如,我们将使用示例数据库(即 dvdrental)。
示例 1:
在这里,我们将处理示例数据库的 film 表。假设您要使用以下逻辑为电影分配价格段:
- 如果租金为 0.99,则质量
- 如果租金为 1.99,则经济
- 如果租金为 4.99,那么豪华
我们将使用以下语句查询每个片段中的电影数量:
SELECT
SUM (
CASE
WHEN rental_rate = 0.99 THEN
1
ELSE
0
END
) AS "Mass",
SUM (
CASE
WHEN rental_rate = 2.99 THEN
1
ELSE
0
END
) AS "Economic",
SUM (
CASE
WHEN rental_rate = 4.99 THEN
1
ELSE
0
END
) AS "Luxury"
FROM
film;
输出:
示例 2:
PostgreSQL 提供了另一种形式的 CASE 表达式,称为简单形式,如下所示:
CASE expression
WHEN value_1 THEN
result_1
WHEN value_2 THEN
result_2
[WHEN ...]
ELSE
result_n
END;
我们可以使用简单的 CASE 重写一般的 CASE 表达式,如下所示:
SELECT
SUM (
CASE rental_rate
WHEN 0.99 THEN
1
ELSE
0
END
) AS "Mass",
SUM (
CASE rental_rate
WHEN 2.99 THEN
1
ELSE
0
END
) AS "Economic",
SUM (
CASE rental_rate
WHEN 4.99 THEN
1
ELSE
0
END
) AS "Luxury"
FROM
film;
输出:
该查询返回与第一个 CASE 示例相同的结果。