pgsql中case when

pgsql中case when

pgsql中case when

PostgreSQL 数据库中,CASE WHEN 语句是一种有条件的逻辑表达式,用于根据不同的条件返回不同的结果。它的语法格式如下:

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

在上面的语法中,CASE 关键字开始一个 CASE 表达式,如果 condition1 满足,则返回 result1;如果 condition2 满足,则返回 result2;如果都不满足,则返回 default_result。这使得在 SELECT 语句或者其他 PostgreSQL 查询中可以根据条件决定返回的结果。

接下来,我们将通过一些示例来介绍在 PostgreSQL 中如何使用 CASE WHEN 语句。

示例一:根据成绩判断等级

假设有一个学生成绩表 grades,包含学生姓名和成绩两个字段。我们要根据不同的成绩来判断学生的等级。

SELECT 
    student_name,
    grade,
    CASE 
        WHEN grade >= 90 THEN 'A'
        WHEN grade >= 80 THEN 'B'
        WHEN grade >= 70 THEN 'C'
        ELSE 'D'
    END AS grade_level
FROM grades;

运行以上查询后,将会得到每个学生的姓名、成绩和对应的等级:

| student_name | grade | grade_level |
|--------------|-------|-------------|
| Alice        | 95    | A           |
| Bob          | 85    | B           |
| Cindy        | 75    | C           |
| David        | 60    | D           |

示例二:统计订单状态

假设有一个订单表 orders,包含订单号和订单状态两个字段。我们要统计不同订单状态的数量,并给出相应的描述。

SELECT 
    order_id,
    order_status,
    CASE 
        WHEN order_status = 'NEW' THEN '新订单'
        WHEN order_status = 'PROCESSING' THEN '处理中'
        WHEN order_status = 'SHIPPED' THEN '已发货'
        ELSE '未知状态'
    END AS status_description
FROM orders;

运行以上查询后,将得到每个订单的订单号、订单状态和状态描述:

| order_id | order_status | status_description |
|----------|--------------|--------------------|
| 1234     | NEW          | 新订单              |
| 5678     | PROCESSING   | 处理中              |
| 9101     | SHIPPED      | 已发货              |
| 1123     | RETURNED     | 未知状态            |

示例三:使用 CASE WHEN 更新数据

除了在 SELECT 查询中使用 CASE WHEN,我们还可以在 UPDATE 语句中使用 CASE WHEN 更新数据。例如,假设我们要将成绩表中成绩大于等于80的学生等级改为’A+’。

UPDATE grades
SET grade_level = CASE 
                    WHEN grade >= 80 THEN 'A+'
                    ELSE grade_level
                  END;

运行以上更新语句后,所有成绩大于等于80的学生等级将会被更新为’A+’。

通过以上示例,我们可以看到在 PostgreSQL 中如何使用 CASE WHEN 语句来根据条件返回不同的结果,无论是在查询还是更新数据时,都是一种非常有用的逻辑表达式。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程