SQL -SUM零件进行业务分析
今天的企业需要从大型数据表中获取信息和知识。趋势分析,预测和智能业务报告仪表板有需求。战略和战术规划者需要信息,数据库充满了它。那么你如何将该数据转化为知识?您可以查看SQL中的分析函数,总和函数是一个SQL函数,可帮助您添加值。
SUM是组成聚合函数组的SQL函数之一。我们通常在SQL中使用的许多函数只对单行进行操作。聚合(也称为组函数)对多行进行操作,允许对数据值进行操作,并以不同的方式显示数据值,以不同的方式存储在数据库中。例如,如果程序员使用提供算术操作(如SUM、COUNT和AVG)的函数,然后将它们应用于多行数据,那么结果将是一个计算过但实际上没有存储在数据库中的值。
这是一个重要的概念,因为这意味着数据不仅仅存储在数据库中,然后检索。相反,组函数可以将数学操作应用于行和批次的数据值以及先前未知的信息。这的价值是,程序员可以通过应用SQL内置的算术函数来生成现有数据的进一步信息和知识。
由于聚合函数处理来自行或行组的数据,使用GROUP BY和多组函数(如SUM)可以提供汇总总数或单个组总数。这听起来可能并不惊天动地,但这是提供商业分析的第一步。例如,数据库可以为业务提供这样的答案:总工资或每个部门的总工资是多少?
通过使用基本的多组函数(如SUM和COUNT),您可以得到上述业务问题的答案。其他单组函数提供了最小值和最大值,方差,以及由此产生的标准差,这将为真实的商业智能和分析提供基础。企业需要的不仅仅是静态信息。它需要分析,那么数据库如何为更复杂的问题提供实时答案呢?销售总量是多少,销售排名是多少,每个渠道的销售与上周,上个月,前月,去年这个时候的偏差是多少?
这些都是企业需要实时回答的问题。要对这些类型的复杂问题建模,然后将它们实现到标准的SQL查询中,编写起来是很困难的。值得庆幸的是,已经有了执行这些专家分析功能的SQL扩展。
作为分析功能
SUM函数对其标准语法进行了分析扩展;
语法:SUM(表达式或列)
过度(分区,订购,窗口)
从示例中的语法可以看出,扩展OVER被添加到SUM计算中。添加它是为了表明,在这种情况下,SUM作为一个分析函数工作,而ORDER BY表示将在此分析和函数上执行的数据范围(窗口或行)。
例如,在下面的代码中,SUM将被用作pre_order列中的数据的分析扩展,并按customer_name进行排序
选择customer_name、pre_order sum(pre_order) OVER (ORDER BY customer_name) running_total 来自Sales_orders. Customer_Name订购; |
上面的SQL查询使用SUM分析函数为每个客户逐行执行pre_order值的累积计数。
customer_name | pre_orders. | runing_total. |
行为 | 20000 | 20000 |
arg | 40000 | 60000 |
靶心 | 70000 | 130000 |
公式4 | 1000 | 131000 |
电视媒体 | 20000 | 151000 |
X-sell | 40000 | 191000 |
yct. | 20000 | 211000 |
结果显示所有客户预订和所有客户累计运行订单的列表。
但是,如果业务需求是通过每个客户的所有客户和累积预订价值的所有预订,那么组或分区子句都必须分离每个组并将总和分析函数限制为每组数据(部门)。
select company_name, department_id, pre_orders,SUM (pre_orders)OVER (PARTITION BY department_id ORDER BY pre_orders) department_totalfrom Sales_Orders ORDERY by Department_ID,Pre-Orders,Company_name; |
在此SQL查询示例中,函数名为sum,它应用于列预订,这是基本的语法。OVER将函数SUM标识为解析函数,该函数将执行超过来自的数据(PARTITION BY department_id ORDER BY pre_sales)。
顾客姓名 | 部门 | 预订 | 部门_Total. |
行为 | 107. | 20000 | 20000 |
arg | 107. | 40000 | 60000 |
靶心 | 107. | 70000 | 130000 |
公式4 | 108. | 1000 | 1000 |
电视媒体 | 108. | 20000 | 21000 |
X-sell | 109. | 40000 | 40000 |
yct. | 109. | 20000 | 60000 |
设置范围
分析功能可能或可能没有窗口子句。窗口基本上是分区内的行中的一组的范围,该分区将由分析函数评估。在第一个示例中,默认情况下使用窗口,因为它使用Order By子句。Order by子句有效地添加了一个默认的Windows子句,它指出当前分区中的当前和先前行是在计算中使用的行。当未说明分区时,那么整个一组行将是默认分区。
在示例一中,没有对PARTITION编码,所以整个列都由累积SUM函数使用。然而,在示例2中,有一个分区,它对每个部门进行分组,但是没有设置窗口参数。可以使用前面的ROWS或RANGE子句设置窗口参数。
SQL Analytic功能是从数据库中包含的数据中获取答案的强大方法。分析是详细报告所需的功能,以及操作和战术规划和分析的信息来源。如果你正在成为成为一个人的旅程SQL专家或业务分析师然后学习利用分析功能是该战术视觉的重要组成部分。