mysql中如何实现字段求和

分类:编程技术 时间:2024-02-20 16:16 浏览:0 评论:0
0
本文将详细讲解如何在MySQL中实现字段求和。小编觉得还是比较实用的,所以分享给大家,作为参考。希望您读完本文后有所收获。

在mysql中,可以使用SUM()函数实现字段求和,返回指定字段value 的总和,语法为“SELECT SUM(DISTINCT expression) FROM 表名 [WHERE 子句];)”。

本教程的运行环境:windows7系统、mysql8版本、Dell G3电脑。

在mysql中,可以使用SUM()函数来实现字段求和。

SUM()函数用于计算一组值或表达式的总和,可以返回指定字段值的总和, SUM()函数语法如下:

SUM(DISTINCT 表达式)

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

如果在不返回匹配行的 SELECT 语句中使用 SUM 函数,则 SUM 函数返回 <代码>NULL,而不是0

DISTINCT 运算符允许计算集合中的不同值。

SUM函数在计算中忽略NULL值。

MySQL SUM() 函数示例

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

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

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

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

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

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

MySQL SUM 和 GROUP BY 子句

GROUP BY< 组合 /code> 子句时,SUM() 函数计算 GROUP BY 中指定的每个组的总和> 子句。

例如,您可以使用带有 GROUP BY 子句的 SUM 函数来计算每个订单的总金额,如下所示:< /p>< pre class="brush:js;toolbar:false;">SELECT orderNumber, FORMAT(SUM(quantityOrdered *priceEach),2)totalFROM orderdetailsGROUP BY orderNumberORDER BY SUM(quantityOrdered *priceEach) DESC;< p>执行上面的查询语句,得到如下结果ults-

+--- ----------+------------+|订单号 |总计 |+-------------+------ ----+| 10165 | 10165 67,392.85 || 10287 | 10287 61,402.00 || 10310| 61,234.67 || 10212 | 10212 59,830.55 |*** 这里省略一大波数据**** *| 10116 | 1,627.56 || 10158 | 1,491.38 | 1,491.38 | 10144 | 1,128.20 || 10408| 615.45 |+-------------+----------+集合中的 327 行

MySQL SUM 和 HAVING

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

SELECT orderNumber, FORMAT(SUM(quantityOrdered *priceEach),2)FROM orderdetailsGROUP BY orderNumberHAVING SUM(quantityOrdered *priceEach) > 60000ORDER BY SUM(quantityOrdered * PriceEach);

执行上述查询语句并得到以下结果-

mysql> SELECT orderNumber, FORMAT(SUM (quantityOrdered *priceEach),2)FROM orderdetailsGROUP BY orderNumberHAVING SUM(quantityOrdered *priceEach) > 60000ORDER BY SUM(订购数量 * 每个价格);+------------------------+------ ------------------- ------------------+|订单号 | FORMAT(SUM(订购数量 * 每个价格),2) |+------------------------+------------------------ ---- ------------------+| 10310| 61,234.67                              || 10165 | 10165 67,392.85 ------------------------------------------+3 行集合

MySQL SUM 和 LIMIT

假设您要计算products的总和表中前十个最贵的产品,可以询问以下查询:

SELECT SUM(buyprice)FROM productsORDER BY buyprice DESCLIMIT 10;

pre>

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

mysql> SELECT SUM(buyprice)FROM productsORDER BY buyprice DESCLIMIT 10;+- ---------------+| SUM(buyprice) |+--- ------------+| 5983.47 |+-------- --------+集合中的 1 行

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

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

SELECT FORMAT(SUM(buyprice),2) FROM(SELECT buypriceFROM productsORDER BY buyprice DESCLIMIT 10)price;

执行上述查询语句,得到如下结果-

+----- -- ------------------+| 格式(SUM(买入价),2) |+------------------- ------- ----+| 958.71 |+------------------------+集合中的 1 行

上面的语句是什么?进行中?

子查询选择前十个最贵的产品。

外层查询计算从子查询返回的价格最高的前 10 产品的总和。

MySQL SUM 与 NULL

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

SELECT COALESCE(SUM(quantityOrdered * PriceEach),0)FROM orderdetailsWHERE ProductCode = 'S1_212121';

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

mysql> SELECT COALESCE(SUM(quantityOrdered * PriceEach),0)FROM订单详情哪里生产tCode = 'S1_212121';+-------------------------------------------------------- -- ----+| COALESCE(SUM(订购数量 * 每个价格),0) |+------------------------------------------------ --- ------------+| 0.00                                                                                                                                                         ----------------+1 行集合

MySQL SUM 和连接语句

您可以在 SELECT JOIN 语句中使用 SUM 函数,根据值指定的条件计算表中值的总和​在另一张桌子上。

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

SELECT FORMAT(SUM(quantityOrdered * PriceEach) , 2) lossFROM orderdetailsINNER JOIN order USING(orderNumber)WHERE status = 'Cancelled'

关于《mysql如何实现字段求和》这篇文章分享到这里。我希望以上内容可以对大家有一定的帮助,让大家能够学到更多的知识。如果您觉得文章不错,请转发,让更多人了解。人们看到了。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > mysql中如何实现字段求和

用户评论