pgsql的case when

pgsql的case when

pgsql的case when

PostgreSQL 中,CASE WHEN 语句用于根据条件选择不同的结果。它类似于其他编程语言中的if-else语句,但更加灵活和强大。CASE WHEN语句让我们可以在一个查询中进行多个条件的判断,并根据不同的条件返回不同的结果。

语法

CASE WHEN语句的基本语法如下:

SELECT 
    CASE 
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
        ...
        ELSE else_result
    END

在上面的语法中,CASE表示开始CASE WHEN语句,WHEN用于指定条件,然后根据条件是否满足来执行相应的结果。ELSE关键字用来指定所有条件都不满足时的默认结果。

示例

让我们通过几个示例来演示CASE WHEN语句的使用。

示例1:根据成绩等级判断学生表现

假设我们有一个学生成绩表(grades),包含学生的姓名和分数。我们想根据学生成绩的不同,给出不同的评级。

CREATE TABLE grades (
    student_name VARCHAR(50),
    score INT
);

INSERT INTO grades (student_name, score) VALUES ('Alice', 80);
INSERT INTO grades (student_name, score) VALUES ('Bob', 90);
INSERT INTO grades (student_name, score) VALUES ('Charlie', 60);
INSERT INTO grades (student_name, score) VALUES ('David', 75);
INSERT INTO grades (student_name, score) VALUES ('Emily', 95);

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

运行上面的查询后,我们会得到每个学生的姓名、分数和对应的评级,如下所示:

| student_name | score | grade |
|--------------|-------|-------|
| Alice        | 80    | B     |
| Bob          | 90    | A     |
| Charlie      | 60    | D     |
| David        | 75    | C     |
| Emily        | 95    | A     |

从上面结果可以看出,根据学生的分数,我们成功地给出了每个学生的成绩评级。

示例2:根据性别显示不同的称呼

假设我们有一个员工表(employees),包含员工的姓名和性别。我们想根据员工的性别显示不同的称呼。

CREATE TABLE employees (
    employee_name VARCHAR(50),
    gender VARCHAR(10)
);

INSERT INTO employees (employee_name, gender) VALUES ('Alice', 'Female');
INSERT INTO employees (employee_name, gender) VALUES ('Bob', 'Male');
INSERT INTO employees (employee_name, gender) VALUES ('Charlie', 'Male');
INSERT INTO employees (employee_name, gender) VALUES ('David', 'Male');
INSERT INTO employees (employee_name, gender) VALUES ('Emily', 'Female');

SELECT 
    employee_name,
    gender,
    CASE 
        WHEN gender = 'Male' THEN 'Mr. ' || employee_name
        WHEN gender = 'Female' THEN 'Ms. ' || employee_name
        ELSE employee_name
    END AS salutation
FROM employees;

运行上面的查询后,我们会得到每个员工的姓名、性别和对应的称呼,如下所示:

| employee_name | gender | salutation |
|---------------|--------|------------|
| Alice         | Female | Ms. Alice  |
| Bob           | Male   | Mr. Bob    |
| Charlie       | Male   | Mr. Charlie|
| David         | Male   | Mr. David  |
| Emily         | Female | Ms. Emily  |

从上面结果可以看出,根据员工的性别,我们成功地给出了每个员工的称呼。

总结

通过上面的示例,我们详细介绍了 PostgreSQLCASE WHEN语句的用法和语法结构,以及在实际场景中的应用。CASE WHEN语句可以轻松实现复杂的条件判断,并根据不同的条件返回不同的结果,提高了查询的灵活性和可读性。在实际开发中,CASE WHEN是一个非常强大和常用的功能,能够帮助我们快速解决各种复杂的条件判断问题。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程