转载自   MySQL sum()函数

MySQL SUM()函数介绍

SUM()函数用于计算一组值或表达式的总和,SUM()函数的语法如下:

SUM(DISTINCT expression)

SUM()函数是如何工作的?

  • 如果在没有返回匹配行SELECT语句中使用SUM函数,则SUM函数返回NULL,而不是0
  • DISTINCT运算符允许计算集合中的不同值。
  • SUM函数忽略计算中的NULL值。

MySQL SUM()函数示例

我们来看看示例数据库(yiibaidb)中的orderdetails表。

可以使用SUM()函数来计算订单编号10100的总金额,如下查询所示:

SELECT FORMAT(SUM(quantityOrdered * priceEach),2) total FROM orderdetails WHERE orderNumber = 10100;

执行上面查询语句,得到以下结果 -

mysql> SELECT FORMAT(SUM(quantityOrdered * priceEach),2) total FROM orderdetails WHERE orderNumber = 10100;
+-----------+
| total     |
+-----------+
| 10,223.83 |
+-----------+
1 row in set

请注意,FORMAT()函数用于格式化SUM()函数的返回值。

MySQL SUM与GROUP BY子句

当与GROUP BY子句组合时,SUM()函数计算GROUP BY子句中指定的每个分组的总和。

例如,可以使用具有GROUP BY子句的SUM函数计算每个订单的总金额,如下所示:

SELECT orderNumber,FORMAT(SUM(quantityOrdered * priceEach),2) total
FROM orderdetails
GROUP BY orderNumber
ORDER BY SUM(quantityOrdered * priceEach) DESC;

执行上面查询语句,得到以下结果

+-------------+-----------+
| orderNumber | total     |
+-------------+-----------+
|       10165 | 67,392.85 |
|       10287 | 61,402.00 |
|       10310 | 61,234.67 |
|       10212 | 59,830.55 |
*** 此处省略了一大波数据 *****
|       10116 | 1,627.56  |
|       10158 | 1,491.38  |
|       10144 | 1,128.20  |
|       10408 | 615.45    |
+-------------+-----------+
327 rows in set

MySQL SUM与HAVING

您可以使用HAVING子句中在SUM函数中来根据特定条件过滤结果。例如,您可以计算总订单量,只能选择总金额大于60000的订单。如下查询语句 -

SELECT orderNumber,FORMAT(SUM(quantityOrdered * priceEach),2)
FROM orderdetails
GROUP BY orderNumber
HAVING SUM(quantityOrdered * priceEach) > 60000
ORDER BY SUM(quantityOrdered * priceEach);

执行上面查询语句,得到以下结果 -

mysql> SELECT orderNumber,FORMAT(SUM(quantityOrdered * priceEach),2)
FROM orderdetails
GROUP BY orderNumber
HAVING SUM(quantityOrdered * priceEach) > 60000
ORDER BY SUM(quantityOrdered * priceEach);
+-------------+--------------------------------------------+
| orderNumber | FORMAT(SUM(quantityOrdered * priceEach),2) |
+-------------+--------------------------------------------+
|       10310 | 61,234.67                                  |
|       10287 | 61,402.00                                  |
|       10165 | 67,392.85                                  |
+-------------+--------------------------------------------+
3 rows in set

MySQL SUM与LIMIT

假设您想要计算products表中前十名最昂贵的产品的总和,可以提出以下查询:

SELECT SUM(buyprice)
FROM products
ORDER BY buyprice DESC
LIMIT 10;

执行上面查询语句,得到以下结果 -

mysql> SELECT SUM(buyprice)
FROM products
ORDER BY buyprice DESC
LIMIT 10;
+---------------+
| SUM(buyprice) |
+---------------+
| 5983.47       |
+---------------+
1 row in set

它不起作用,因为具有SUM函数的SELECT语句只返回一行,LIMIT子句约束要返回的行数无效。

要解决此问题,请使用以下子查询:

SELECT FORMAT(SUM(buyprice),2) FROM
(SELECT buyprice
FROM products
ORDER BY buyprice DESC
LIMIT 10) price;

执行上面查询语句,得到以下结果 -

+-------------------------+
| FORMAT(SUM(buyprice),2) |
+-------------------------+
| 958.71                  |
+-------------------------+
1 row in set

上面语句是怎么运行的?

  • 子查询选择十大价格最高的产品。
  • 外部查询计算从子查询返回的前10个价格最高的产品的总和。

MySQL SUM与NULL

如果没有匹配的行,则SUM函数返回NULL值。 有时,您希望SUM函数返回0而不是NULL。 在这种情况下,可以使用COALESCE函数。COALESCE函数接受两个参数,如果第一个参数为NULL,则返回第二个参数,否则返回第一个参数; 参考以下查询语句:

SELECT COALESCE(SUM(quantityOrdered * priceEach),0)
FROM orderdetails
WHERE productCode = 'S1_212121';

执行上面查询语句,得到以下结果 -

mysql> SELECT COALESCE(SUM(quantityOrdered * priceEach),0)
FROM orderdetails
WHERE productCode = 'S1_212121';
+----------------------------------------------+
| COALESCE(SUM(quantityOrdered * priceEach),0) |
+----------------------------------------------+
| 0.00                                         |
+----------------------------------------------+
1 row in set

MySQL SUM与连接语句

您可以使用SELECT JOIN语句中的SUM函数根据另一个表中的值指定的条件来计算表中的值的总和。

例如,要计算取消订单金额的总和,请使用以下语句:

SELECT FORMAT(SUM(quantityOrdered * priceEach),2) loss
FROM orderdetails
INNER JOIN orders USING(orderNumber)
WHERE status = 'Cancelled'

在本教程中,您学习了如何使用MySQL SUM函数来计算列,表达式和分组值的总和。

MySQL sum()函数相关推荐

  1. mysql sum函数返回类型_MySQL的sum函数返回的门类

    MySQL的sum函数返回的类型 今天项目切换数据库时,出错 访问数据库的代码大概是这样: String sql = "select sum(number) as sumNumberOfOn ...

  2. MySQL SUM函数进行计算会出现0000000001或9999999999未知小数

    MySQL中当使用sum函数来计算 varchar.float类型的字段有可能会出现0000000001或9999999999未知小数. 咱们可以把对应数据结果转换类型为Decimal类型,进行精度保 ...

  3. Mysql——SUM()函数

    目录 一.前期准备工作 新建表如下: 插入的数据如下: 二.SUM()函数的用法 1.求和,返回指定列的总和 SUM 函数可以对单个列求和,也可以对多个列运算后求和,计算中忽略 NULL 值 SUM函 ...

  4. MySQL SUM()函数按条件求和

    一般求和 select sum(money) from user group by id; 按条件求和 select sum(if(type=1,money,0)) from user group b ...

  5. Mysql与Sql server,Sum函数跟Count函数

    两者均是统计类函数,都不计算NULL字段!!! 单纯计算行数的话,count的效率比sum的效率高 MySQL SUM()函数介绍 SUM()函数用于计算一组值或表达式的总和,SUM()函数的语法如下 ...

  6. mysql min函数 结果全为null_MySQL ----- 聚集函数(AVG,SUM,COUNT,MIN,MAX) (十一)

    为了汇总数据而不把实际的检索出来,MySQL 提供了专门的函数,聚集函数 好处:可以将检索数据进行分析和报表生成 一.聚集函数(aggregate function): 运行在行组上,计算和返回单个值 ...

  7. mysql union all sum_[数据库]SQL Server UNION ALL 结果 SUM函数造成精度丢失

    [数据库]SQL Server UNION ALL 结果 SUM函数造成精度丢失 0 2020-08-03 18:00:30 SQL Server 数据类型 使用场景: 在进行多维度汇总数据时,需要将 ...

  8. mysql sum计算效率很慢_MySQL基础之分组函数

    分组函数主要用于统计,又称为聚合函数.统计函数或组函数. 常见的分组函数有: SUM(expr) 求和AVG([DISTINCT] expr) 求平均值MAX(expr) 求最大值MIN(expr) ...

  9. mysql sum_MySQL中的SUM函数使用教程

    MySQL的SUM函数是用来找出记录中各种的字段的总和. 要了解SUM函数考虑EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl; +- ...

最新文章

  1. UITableView嵌套WKWebView的那些坑
  2. 独家 | 从零开始用python搭建推荐引擎(附代码)
  3. pythonpandas用sql查询数据表_pandas从数据库读取数据
  4. python开源代码-这7个开源的Python库,让你轻松代码分析
  5. linux 中断 进程,linux中断分上下部分原因
  6. 大话项目管理工具之Confluence篇
  7. AKKA Inbox收件箱
  8. PTA基础编程题目集6-4求自定类型元素的平均 (函数题)
  9. conda 环境迁移
  10. virtualenvwrapper安装及使用
  11. Kubernetes详解(五)——Kubernetes核心对象
  12. Android Studio 红米3 一直运行或者debug不成功,提示 Failed to establish session 解决方案
  13. Mac电脑查看JDK文档,CHM格式文档阅读
  14. Java——课设——图书管理系统实现
  15. 关于Google Play这个应用市场app signing的坑
  16. 软件测试人员需不需要懂代码
  17. 《巴菲特之道》精髓:巴菲特的股神进阶之路和投资方法
  18. jQuery三款简约MP3播放器插件
  19. 如何用一根网线实现在两台电脑之间传输数据
  20. 无人驾驶感知篇之毫米波雷达

热门文章

  1. TensorFlow学习笔记12----Creating Estimators in tf.contrib.learn
  2. 2021年危险化学品生产单位安全生产管理人员考试内容及危险化学品生产单位安全生产管理人员试题及解析
  3. nodeJS xlsx库 笔记
  4. cisp题库700道(带答案)
  5. 金融科技数据中台基于 DolphinScheduler 的应用改造
  6. 样本不平衡的常用处理方法
  7. 扇贝python编程课_扇贝编程app下载-扇贝编程手机版python「附如何设置自由职业」 - 超好玩...
  8. etsme--Me盒使用初体验
  9. 几何光学学习笔记(17)- 4.6光学材料
  10. 【Java】实现统计字符串中大写、小写、数字字符出现次数