SQL SUM 函数
时间:2018-11-15 17:51:56 来源:igfitidea点击:
在本教程中,我们将学习如何使用SQL SUM函数计算所有值或不同值的和。
SQL求和函数SUM()介绍
SUM函数返回数字和。它的语法如下:
SUM(DISTINCT | ALL 数字表达式)
与其他SQL聚合函数不同,SUM()函数只接受计算后为数值的表达式。
你可以在SUM函数中指定ALL或DISTINCT修饰符。其中:
- DISTINCT修饰符指示SUM()函数计算不同值的总和,这意味着将消除重复项。
- ALL修饰符允许SUM()函数返回包括重复项在内的所有值的和。如果未显式指定任何修饰符,则默认情况下SUM()函数使用ALL修饰符。
简单的SQL SUM函数示例
要获得库存数量和订购数量的总和,可以使用SUM()函数,如下所示:
SELECT SUM(unitsinstock), SUM(unitsonOrder) FROM products;
带有GROUP BY子句的SQL SUM函数示例
要获取每个供应商库存数量的总和,可以将SUM()函数与GROUP BY子句一起使用:
SELECT supplierid, SUM(unitsinstock) FROM products GROUP BY supplierid;
GROUP BY子句将按供应商对产品进行分组。对于每个组,SUM()函数计算库存数量的和。
带HAVING子句的SQL SUM函数示例
要获取库存单位总数小于50的供应商,需要将sum()函数与GROUP by和HAVING子句一起使用,如下所示:
SELECT supplierid, SUM(unitsinstock) FROM products GROUP BY supplierid HAVING SUM(unitsinstock) < 50;
我们可以对SUM表达式使用别名,下面的语句作用是一样的:
SELECT supplierid, SUM(unitsinstock) totalinstock FROM products GROUP BY supplierid HAVING totalinstock < 50;
高级SQL SUM函数示例
我们还可以使用SUM函数处理更具挑战性的业务问题,比如按销售额获取前5名客户,如下所示:
SELECT customers.customerid, companyname, (SUM(unitprice * quantity) - SUM(unitprice * quantity) * discount) AS total FROM orderdetails INNER JOIN orders_test ON orders_test.orderid = orderdetails.orderid INNER JOIN customers ON customers.customerid = orders_test.customerid GROUP BY customers.customerid ORDER BY total DESC LIMIT 5
下面的查询使用SUM()函数得到5个最畅销的产品:
SELECT p.productid, p.productname, (SUM(o.unitprice * quantity) - SUM(o.unitprice * quantity) * discount) total FROM orderdetails o INNER JOIN products p ON p.productid = o.productid GROUP BY p.productid ORDER BY total DESC LIMIT 5;