SQL Sum:把你所有的价值加起来
SQL Server有许多聚合函数。一个这样的功能是“SUM()”功能。此函数添加了两个或多个列,为您提供所有这些列的总附加值。列可以是整数,浮点,小数或金钱数据类型。您可以使用SUM函数来加起来和显示结果,也可以在另一个数据库表列中添加和存储值。
SQL新的新书和写疑问?了解如何在udemy.com上为应用程序编写SQL查询。
识别和函数的列
任何数字列都可以用于sum函数。要确定可以用于sum函数的列,需要查看表和定义的数据类型。例如,在SQL Server中,如果右键单击任何数据库表,可以选择“Design”来查看列定义列表。其他数据库如MySQL和Oracle有GUI软件来帮助您进行表设计。
使用总和函数
在知道要使用的列之后,现在可以在表上运行sum函数。例如,您可能有一个订单表,其中您的客户订购了大量产品。下面的代码是一个计算你的每一个订单的数量的例子:
从订单中选择sum(数量)
运行此语句并查看结果。在这种情况下,您只会看到添加数量的列表。从报告状态来看,这不是很有用。下面的代码给出了添加的数量,但是它有一个列名用于求和的数量:
从订单中选择sum(quantity)作为TotalQuantity
在上述声明中,您的增加的数量显示出“TotalQuality”列标题。当然,你可能不想要数量列表。即使这是一份报告,它也没有任何帮助。您可能想知道每个客户订购多少。要执行此类搜索,您需要在现有查询上使用另外两个短语。
第一步是向查询添加“where”子句。“where”子句过滤返回的记录数量。这意味着,与上面语句中所发生的返回所有数量不同,您只返回想要查看的记录。例如,假设您只想查看7天内所下订单的客户数量列表。下面的代码是一个例子,如何做到这一点:
select sum(quantity) as TotalQuantity from orders where orderdate >= getdate() - 7
在上面的语句中,假定您将订单日期保存在“orderdate”列中。“getdate()”函数获取当前系统日期和时间。条款的“- 7”部分从当前日期减去7天。因此,返回的唯一记录是订单日期大于7天之前的订单。
通过上面的代码,您可以为数据库orders表中的每条记录获得一个数量。这个查询假设您在表中保留一个数量。一些数据库管理员将强制您避免使用这种方法,并只链接到订购的产品,这些产品将在本节的表中有一个数量。
这意味着您将得到每个订单的总和数量,但假设您想看到基于客户的数量。通常,在订单表中存储一个客户Id,以便将客户与订单联系起来。下面的代码显示了如何根据客户id对记录进行分组:
从OrderDate> = GetDate() - 7的订单中选择CustomerId,Sum(数量)作为TotalQuantity
上面的代码向您展示每个客户ID的总和。但是,只有客户ID不会告诉您客户名称,除非您将客户编号与其相应的名称记住。以下代码向您展示如何显示客户名称,该客户名称位于加入的客户表中:
选择名称,CustomerID,Sum(数量)作为Orders o在O.CustomerID = C.CustomerID的Onderdate> = GetDate() - 7
当您运行上面的查询时,您将看到三列:name、customerid和TotalQuantity。这是一个更有用的查询,因为您可以根据每个客户看到销售的产品数量。这可以添加到您的任何销售报告。
其他汇总函数
SQL有几个其他聚合函数。您还可以根据特定查询计算记录数。例如,假设您要查找上周内的订单数。以下“count”SQL函数确定总计的订单数:
select count(*) as TotalOrders from orders where orderdate >= getdate() - 7
SQL还具有“AVG”功能。此函数计算平均值,这是指定列的总和除以列数。例如,您可能希望了解每个订单的平均总数。这使您可以计算您的平均收入和成本。以下SQL语句计算销售平均值:
从OrderDate> = GetDate() - 7的订单中选择AVG(ORDER_TOTAL)作为ORRENTORAL
上面的声明假定您在“Order_total”列中存储订单的总数。请注意,您无需进行任何计算。只需使用AVG函数,SQL执行基本计算。
SQL也有一个“min”和“max”函数。min函数得到记录集中的最小值,max函数得到最大值。
例如,您可能希望本周获得最高或最低的销售。下面的代码是本周最低(min)和最高(最多):
从订单> = getDate() - 7从OrderDate> = GetDate() - 7的订单中选择最多订单,选择Min(Order_total)
同样,Where子句过滤数据,因此只有最小7天从最小的顺序拉动。
聚合SQL函数使您更轻松地在列上执行基本数学。通过一些更复杂的查询,您可以为您的业务创建报告和其他数据操作。