SQL SELECT CASE

SQL SELECT CASE

SQL SELECT CASE

介绍

SQL 中,SELECT CASE 语句用于根据一个或多个条件返回不同的结果。它允许我们根据特定条件选择不同的列或值并进行计算。

SELECT CASE 语句包括两个部分:CASE 和 END。CASE 后面的条件可以是列、表达式或其他SQL语句,然后根据这些条件返回不同结果。

在本文中,我们将详细探讨 SELECT CASE 语句的语法、用法和示例,以便更好地理解和应用它。

语法

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

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

其中,condition1、condition2 等是条件,result1、result2 等是对应满足条件的结果,ELSE 后面是一个默认结果,如果没有任何条件满足,将返回该默认结果。

示例

让我们通过几个示例来说明 SELECT CASE 的使用方式。

示例 1

假设我们有一个名为 students 的表,其中包含学生的姓名、年龄和成绩。我们想根据他们的成绩进行分类,并将他们分为优秀、良好、及格和不及格四个类别之一。

SELECT name, 
    CASE
        WHEN grade >= 90 THEN '优秀'
        WHEN grade >= 80 THEN '良好'
        WHEN grade >= 60 THEN '及格'
        ELSE '不及格'
    END AS category
FROM students;

运行以上代码后,将返回一个包含姓名和对应成绩分类的结果集。

示例 2

假设我们还是用上述的 students 表,但现在我们想根据学生的年龄分为儿童、青少年和成年人三个类别,我们可以使用 SELECT CASE 语句来实现。

SELECT name, 
    CASE
        WHEN age <= 12 THEN '儿童'
        WHEN age <= 18 THEN '青少年'
        ELSE '成年人'
    END AS category
FROM students;

以上代码将根据学生的年龄返回一个结果集,其中包含姓名和对应的年龄分类。

示例 3

SELECT CASE 语句除了返回静态值,还可以进行计算。以下示例演示了如何计算学生的平均分,并将其分类。

SELECT name, 
    CASE
        WHEN avg_grade >= 90 THEN '优秀'
        WHEN avg_grade >= 80 THEN '良好'
        WHEN avg_grade >= 60 THEN '及格'
        ELSE '不及格'
    END AS category
FROM (
    SELECT name, AVG(grade) AS avg_grade
    FROM students
    GROUP BY name
) AS grades;

运行以上代码后,将返回一个包含学生姓名和对应的平均分分类的结果集。

总结

在本文中,我们详细介绍了 SELECT CASE 语句的语法和用法,以及给出了几个使用示例。SELECT CASE 语句使我们能够根据特定条件选择不同的列或值,并进行计算。这在对数据进行分类和分组时非常有用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程