返回顶部
首页 > 资讯 > 数据库 >Sql Server Sum函数的特殊使用
  • 952
分享到

Sql Server Sum函数的特殊使用

SqlServerSum函数的特殊使用 2020-03-27 01:03:23 952人浏览 猪猪侠
摘要

利用SQL Server的Sum函数开窗得到累计值 具体详解https://www.cnblogs.com/zhaoshujie/p/9594676.html   个人示例例子  DECLARE @Sale Table (--年

Sql Server Sum函数的特殊使用

利用SQL Server的Sum函数开窗得到累计值

具体详解https://www.cnblogs.com/zhaoshujie/p/9594676.html

 

个人示例例子 

DECLARE @Sale Table
(--年份			月份			销售总额
  [Year]  INT,  [Month] INT,  TotalSales Float		
)
insert  INTO @Sale
SELECT  2016,	1,	100 UNION ALL SELECT  2016,	2,	200 UNioN ALL
SELECT  2016,	3,	300 UNION ALL SELECT  2016,	4,	400 UNION ALL
SELECT  2016,	5,	500 UNION ALL SELECT  2016,	6,	600 UNION ALL
SELECT  2016,	7,	650 UNION ALL SELECT  2016,	8,	500 UNION ALL
SELECT  2016,	9,	450 UNION ALL SELECT  2016,	10,	400 UNION ALL
SELECT  2016,	11,	300 UNION ALL SELECT  2016,	12,	400 UNION ALL
SELECT  2017,	1,	500 UNION ALL SELECT  2017,	2,	400 UNION ALL
SELECT  2017,	3,	500 UNION ALL SELECT  2017,	4,	400 UNION ALL
SELECT  2017,	5,	500 UNION ALL SELECT  2017,	6,	400 UNION ALL
SELECT  2017,	7,	500 UNION ALL SELECT  2017,	8,	400 UNION ALL
SELECT  2017,	9,	500 UNION ALL SELECT  2017,	10,	400 UNION ALL
SELECT  2017,	11,	500 UNION ALL SELECT  2017,	11,	400;	--注意2017有2条11月份重复数据
select [YEAR], [Month], TotalSales, 
	SUM(TotalSales)over() as [16-17销售总额],		
	--将所有的记录的TotalSales加起来的总和
	--100+200+300+400+500+600+650+500+450+400+300+400+500+400+500+400+500+400+500+400+500+400+500+400 = 10200
	

	--【未使用 partition by 指定分区示例】-------------------------------------------------------------
	sum(TotalSales) over(order by [YEAR]) [列1],
	--按照Year排序,计算同Year的总值与前面排序的总值之和,等同于[列3]
	sum(TotalSales) over(order by [YEAR],[Month]) [列2],
	--按照Year,Month排序,计算同Year,Month的总值与前面排序的总值之和,等同于[列4]
	sum(TotalSales) over(order by [YEAR] RANGE BETWEEN unbounded preceding AND CURRENT ROW) [列3],
	--RANGE BETWEEN unbounded preceding AND CURRENT ROW 表示指定取值范围为 当前行与当前行前面的所有行的值
	--	Year[2016]值为4800, Year[2017]值为其5400+TValue[2016]【4800】为10200
	sum(TotalSales) over(order by [YEAR],[Month] RANGE BETWEEN unbounded preceding AND CURRENT ROW) [列4],
	--按照Year,Month排序,累加当前行和前面所有行的值写入到同Year,Month中【注意,和列6中23,24的差异】
	sum(TotalSales) over(order by [YEAR] rows  BETWEEN unbounded preceding AND CURRENT ROW)[列5],
	--rows BETWEEN unbounded preceding AND CURRENT ROW  表示指定取值范围为 当前行与当前行前面的所有行的值。
	--按照Year排序,把当前行的值和前面所有行的值累加
	sum(TotalSales) over(order by [YEAR],[Month] rows  BETWEEN unbounded preceding AND CURRENT ROW)[列6],
	--按照Year,Month排序,当前行的值为  当前行和排序后前面所有的行的总值,【注意,和列4中 23,24行的差异】
	sum(TotalSales) over(order by [YEAR] rows BETWEEN 1 preceding AND 2 following) [列7],
	--rows BETWEEN 1 preceding AND 2 following 表示指定取值范围为 当前行与前一行和后两行的值
	--即第一行的值为:600=100+200+300  第二行的值为:1000=100+200+300+400  第三行的值为:1400=200+300+400+500
	sum(TotalSales) over(order by [YEAR] ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) [列8],
	--ROWS BETWEEN 1 PRECEDING AND CURRENT ROW 表示指定取值范围为 当前行与前一行的值
	--即第一行的值为:100=100  第二行的值为:300=100+200  第三行的值为:500=300+200


	--【使用 partition by 指定分区示例】--------------------------------------------------------------
	SUM(TotalSales)over(PARTITION BY [YEAR])[年销售额],
	--按照Year进行分区,将同Year的TotalSales累积并写入到同Year的行中
	--2016区间:100+200+300+400+500+600+650+500+450+400+300+400 = 4800
	--2017区间:500+400+500+400+500+400+500+400+500+400+500+400=5400
	SUM(TotalSales)over(PARTITION BY [YEAR],[Month])[月销售额],
	--按照Year,Month分区, Year,Month组成的只有1条数据,值为TotalSales

	sum(TotalSales) over(partition by [YEAR] order by [YEAR]) [列09],
	--按照Year分区,2016为1个区间,2017为1个区间, 按照Year排序, 当前行值为同Year的总值	--和前面Year的总值[没有前面Year]
	sum(TotalSales) over(partition by [YEAR] order by [YEAR],[Month]) [列10],
	--按照Year分区,2016为1个区间,2017为1个区间, 按照Year,Month排序排序,同Year,Month的值为[排序后前面同Year,Month的总值]加上[当前Year,Month的总值]

	sum(TotalSales) over(partition by [YEAR] order by [YEAR],[Month] RANGE BETWEEN unbounded preceding AND CURRENT ROW) [列11],
	--按照Year分区,2016为1个区间,2017为1个区间, 以[YEAR],[Month]排序, 同Year,Month的值为[排序后前面同Year,Month的总值]加上[当前Year,Month的总值]
	sum(TotalSales) over(partition by [YEAR] order by [YEAR],[Month] rows  BETWEEN unbounded preceding AND CURRENT ROW) [列12],
	--按照Year分区, 以[YEAR],[Month]排序,当前行的值为当前行和前面所有行的总值, 注意23,24行与列11的比较
	sum(TotalSales) over(partition by [YEAR] order by [YEAR],[Month] rows BETWEEN 1 preceding AND 2 following) [列13],
	--按照Year分区, 以[YEAR],[Month]排序,当前行的值为当前行前面1行到当前行后面2行的总值
	sum(TotalSales) over(partition by [YEAR] order by [YEAR],[Month] ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) [列14]
	--按照Year分区, 以[YEAR],[Month]排序,当前行的值为当前行前面1行到当前行的值

	--ROWS与RANGE之间的区别看[列4]与[列5],[列11]与[列12]中第23,24的值差异
from @Sale

执行结果

 

您可能感兴趣的文档:

--结束END--

本文标题: Sql Server Sum函数的特殊使用

本文链接: https://lsjlt.com/news/6541.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Sql Server Sum函数的特殊使用
    利用Sql Server的Sum函数开窗得到累计值 具体详解https://www.cnblogs.com/zhaoshujie/p/9594676.html   个人示例例子  DECLARE @Sale Table (--年...
    99+
    2020-03-27
    Sql Server Sum函数的特殊使用
  • SQL-特殊函数
    函数 结果 DECODE decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) 该函数的含义如下:IF条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THEN RETURN...
    99+
    2020-12-12
    SQL-特殊函数
  • sql server特殊字符查询问题及ESCAPE的使用
    公司一个老项目,sql server的 模糊查询时,查询条件包含 [] ,然后查询结果就一直为空 查阅资料得知:如果 LIKE 模式中的转义符后面没有字符,则该模式无效并且 LIKE 返回 FALSE。如果转义符后面的字符不是通配...
    99+
    2015-06-01
    sql server特殊字符查询问题及ESCAPE的使用
  • sql中的sum函数的用法
    sql 中 sum 函数计算指定列非空值之和。其语法为 sum(expression),其中 expression 为要计算的列或表达式。sum 函数可用于计算总和、汇总数据,并适用于财...
    99+
    2024-05-09
    库存管理
  • JavaScript中的特殊函数怎么使用
    这篇文章主要介绍“JavaScript中的特殊函数怎么使用”,在日常操作中,相信很多人在JavaScript中的特殊函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript中的特殊函数怎...
    99+
    2023-07-02
  • sql中sum函数怎么用
    sql中的sum()函数用于计算数字列的总和。它可以根据指定列、过滤条件、别名、分组和聚合多个列来计算总和,但仅处理数字值,忽略null值。 SQL 中 SUM() 函数的使用 SQL...
    99+
    2024-05-02
    聚合函数
  • Sql Server中REPLACE函数的使用
    在SQL Server中,REPLACE函数用于替换字符串中的指定字符或子字符串。REPLACE函数的语法如下:REPLAC...
    99+
    2023-08-15
    Sql Server
  • MySQL特殊函数使用技巧梳理
    目录1. group_concat2. char_length3.locate4.replace5.now6.insert into … select7.in...
    99+
    2023-05-20
    mysql特殊函数 mysql特有函数 mysql特有语句
  • hive的sum函数怎么使用
    在Hive中,可以使用SUM函数对某一列中的值进行求和操作。具体使用方式如下: SELECT SUM(column_name...
    99+
    2024-03-05
    hive
  • SQL窗口函数之聚合窗口函数的使用(count,max,min,sum)
    目录案例分析1.移动平均值2.累计求和(ROW)3.累计求和(RANGE)示例表和脚本关于窗口函数的基础,请看文章SQL窗口函数 许多常见的聚合函数也可以作为窗口函数使用,包括AVG...
    99+
    2024-04-02
  • SQL Server DATEDIFF() 函数怎么使用
    本篇内容主要讲解“SQL Server DATEDIFF() 函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server D...
    99+
    2023-06-22
  • SQL count和sum的使用
    (1)sum:不为NULL的列值总和 sum(字段值):对该列中不为NULL的值求和,如果列值为0,也会纳入统计。 (2)count:统计满足条件的行数 count(0)=count(1)=count(*) --不忽略null值和空值 co...
    99+
    2023-09-18
    sql 数据库 mysql
  • SQL Server中的数学函数怎么使用
    这篇“SQL Server中的数学函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SQL Se...
    99+
    2023-06-30
  • SQL Server中的JSON函数怎么使用
    这篇文章主要介绍“SQL Server中的JSON函数怎么使用”,在日常操作中,相信很多人在SQL Server中的JSON函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL...
    99+
    2023-06-30
  • SQL Server聚合函数新特性介绍
    SQL Server 2017引入了一些新的聚合函数特性,让用户更轻松地处理数据并获得更好的性能。以下是一些主要的新特性: APPROX_COUNT_DISTINCT函数:这个函数可以用来估算一个列中不同值的数量,比如可以用来快速计算某...
    99+
    2024-08-03
    sql server
  • SQL Server stuff函数的用法
    1、作用删除指定长度的字符,并在指定的起点处插入另一组字符。2、语法STUFF ( character_expression , start , length ,character_expression2 ...
    99+
    2024-04-02
  • mysql的sum函数该如何使用
    本文主要给大家简单讲讲mysql的sum函数该如何使用,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql的sum函数该如何使用这篇文章可以给大家带来一...
    99+
    2024-04-02
  • oracle中sum函数的使用方法
    sum 函数在 oracle 中计算一系列值的总和。语法:sum(expression),其中 expression 为数值表达式或列名。它可以对一列中的所有行值进行求和,或通过 whe...
    99+
    2024-04-30
    oracle
  • SQL Server中JSON 函数如何使用
    SQL Server中JSON 函数如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 JSON 函数使用本节中...
    99+
    2024-04-02
  • Sql Server中如何使用REPLACE函数
    今天就跟大家聊聊有关Sql Server中如何使用REPLACE函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。REPLACE用第三个表达式替换第...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作