📜  PostgreSQL – 案例

📅  最后修改于: 2022-05-13 01:57:15.631000             🧑  作者: Mango

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 示例相同的结果。