sql中的sum函数的用法
                           
天天向上
发布: 2024-12-08 10:49:59

原创
77 人浏览过

在 SQL 中,SUM 函数用于计算数值列的总和。它常用于聚合查询中,尤其是在结合 GROUP BY 子句时,来统计分组的总和。以下是 SUM 函数的详细用法和示例:


基本语法

SELECT SUM(column_name)
FROM table_name
[WHERE condition];

用法示例

1. 计算一列的总和

SELECT SUM(salary) AS total_salary
FROM employees;

这段代码会返回 employees 表中所有员工的 salary 总和。


2. 配合 WHERE 子句

SELECT SUM(salary) AS total_salary
FROM employees
WHERE department_id = 101;

这段代码会返回部门编号为 101 的所有员工的薪资总和。


3. 配合 GROUP BY 子句

SELECT department_id, SUM(salary) AS total_salary
FROM employees
GROUP BY department_id;

这段代码会按部门分组,计算每个部门的薪资总和。


4. 处理重复值 (DISTINCT)

如果希望只统计某列中唯一值的总和,可以使用 DISTINCT 关键字:

SELECT SUM(DISTINCT salary) AS unique_salary_total
FROM employees;

这段代码会计算 salary 列中唯一值的总和。


5. 配合其他聚合函数

SUM 通常与其他聚合函数一起使用,例如 AVGMAXMIN 等:

SELECT SUM(salary) AS total_salary, AVG(salary) AS avg_salary
FROM employees;

注意事项

  1. 非数值列
  • SUM 只能对数值列进行计算,使用在非数值列上会报错。
  1. NULL 值的处理
  • SUM 会自动忽略列中的 NULL 值。
  • 如果需要确保某列不会因 NULL 值影响结果,可以使用 COALESCENULL 替换为 0:
    sql SELECT SUM(COALESCE(salary, 0)) AS total_salary FROM employees;
  1. 结果列名
  • 默认情况下,SUM 返回的列名可能是函数本身(如 SUM(salary)),可以使用 AS 设置更友好的别名。

综合示例

假设有一个 orders 表:

order_id    customer_id    amount
1           101            500
2           102            300
3           101            700
4           103            NULL
5           102            200

示例查询

  • 计算总订单金额
  SELECT SUM(amount) AS total_amount
  FROM orders;

结果:1500

  • 按客户分组计算订单金额
  SELECT customer_id, SUM(amount) AS total_amount
  FROM orders
  GROUP BY customer_id;

结果:

  customer_id    total_amount
  101            1200
  102            500
  103            0

如果有更多的应用场景或问题,可以随时告诉我!

发表回复 0

Your email address will not be published. Required fields are marked *