Oracle SUM CASE WHEN 合并使用

Oracle SUM CASE WHEN 合并使用

Oracle SUM CASE WHEN 合并使用

在 Oracle 数据库中,我们经常需要根据特定条件对数据进行汇总计算。SUM CASE WHEN 是一个非常常用的组合,它可以帮助我们根据条件对不同的行进行求和操作。本文将详细介绍 Oracle 中 SUM CASE WHEN 的用法和示例。

语法

SUM CASE WHEN 的基本语法如下:

SELECT 
    SUM(
        CASE 
            WHEN condition1 THEN value1
            WHEN condition2 THEN value2
            ...
            ELSE default_value
        END
    ) AS alias
FROM
    table_name
WHERE
    condition;
  • SUM:聚合函数,用于对满足条件的行进行求和操作。
  • CASE WHEN:条件语句,根据条件选择不同的值。
  • condition1, condition2, …:条件表达式。
  • value1, value2, …:对应条件为真时的值。
  • default_value:所有条件均不满足时的默认值。
  • alias:SUM 函数的别名,用于返回计算结果。
  • table_name:表名,待操作的数据源。
  • condition:筛选条件,可选。

示例

假设我们有一个名为 employees 的表,存储了员工的工资数据。现在我们想要根据员工的职务不同,分别计算各个职务的平均工资。我们可以使用 SUM CASE WHEN 来实现这个需求。

首先,让我们创建一个示例表 employees,并插入一些数据:

CREATE TABLE employees (
    emp_id INT,
    emp_name VARCHAR(50),
    job_title VARCHAR(50),
    salary INT
);

INSERT INTO employees VALUES (1, 'Alice', 'Manager', 5000);
INSERT INTO employees VALUES (2, 'Bob', 'Developer', 4000);
INSERT INTO employees VALUES (3, 'Charlie', 'Developer', 4500);
INSERT INTO employees VALUES (4, 'David', 'Manager', 5500);

现在我们可以使用 SUM CASE WHEN 来计算不同职务的平均工资:

SELECT 
    job_title,
    SUM(
        CASE
            WHEN job_title = 'Manager' THEN salary
            ELSE 0
        END
    ) / COUNT(
        CASE
            WHEN job_title = 'Manager' THEN 1
        END
    ) AS avg_manager_salary,
    SUM(
        CASE
            WHEN job_title = 'Developer' THEN salary
            ELSE 0
        END
    ) / COUNT(
        CASE
            WHEN job_title = 'Developer' THEN 1
        END
    ) AS avg_developer_salary
FROM
    employees
GROUP BY
    job_title;

在以上示例中,我们使用了 SUM CASE WHEN 来分别计算了 Manager 和 Developer 这两个职务的平均工资。结果如下:

job_title   | avg_manager_salary | avg_developer_salary
-------------|---------------------|----------------------
Manager      | 5250                | 0
Developer    | 0                   | 4250

从结果可以看出,经理的平均工资为 5250,开发者的平均工资为 4250。

总结

SUM CASE WHEN 是一个功能强大且常用的组合,在处理数据汇总和计算时非常实用。通过合理地运用 CASE WHEN 语句,我们可以根据不同条件对数据进行灵活的聚合操作。在实际工作中,我们应该根据具体需求合理地运用 SUM CASE WHEN,以提高工作效率和数据处理准确性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程