mysql中如何实现字段求和
在mysql中,可以使用SUM()函数实现字段求和,返回指定字段value 的总和,语法为“SELECT SUM(DISTINCT expression) FROM 表名 [WHERE 子句];)”。
本教程的运行环境:windows7系统、mysql8版本、Dell G3电脑。
在mysql中,可以使用SUM()函数来实现字段求和。
SUM()
函数用于计算一组值或表达式的总和,可以返回指定字段值的总和, SUM() code>函数语法如下:
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 子句 h4>
与 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'; pre>执行上面的查询语句,得到如下结果-
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如何实现字段求和》这篇文章分享到这里。我希望以上内容可以对大家有一定的帮助,让大家能够学到更多的知识。如果您觉得文章不错,请转发,让更多人了解。人们看到了。
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > mysql中如何实现字段求和