如何统计全天各个时间段产品销量情况(sqlserver)

数据库环境:SQL SERVER 2005

现有一个产品销售实时表,表数据如下:

字段name是产品名称,字段type是销售类型,1表示售出,2表示退货,字段num是数量,字段ctime是操作时间。

要求:

  在一行中统计24小时内所有货物的销售(售出,退货)数据,把日期考虑在内。

分析:

  这实际上是行转列的一个应用,在进行行转列之前,需要补全24小时的所有数据。补全数据可以通过系统的数字辅助表

spt_values来实现,进行行转列时,根据type和处理后的ctime分组即可。

1.建表,导入数据

CREATE TABLE snake (name VARCHAR(10 ),type INT,num INT, ctime DATETIME ) INSERT INTO snake VALUES(' 方便面', 1,10 ,'2015-08-10 16:20:05') INSERT INTO snake VALUES(' 香烟A ', 2,2 ,'2015-08-10 18:21:10') INSERT INTO snake VALUES(' 香烟A ', 1,5 ,'2015-08-10 20:21:10') INSERT INTO snake VALUES(' 香烟B', 1,6 ,'2015-08-10 20:21:10') INSERT INTO snake VALUES(' 香烟B', 2,9 ,'2015-08-10 20:21:10') INSERT INTO snake VALUES(' 香烟C', 2,9 ,'2015-08-10 20:21:10')

2.补全24小时的数据

/*枚举0-23自然数列*/ WITH x0 AS ( SELECT number AS h FROM master..spt_values WHERE type = 'P' AND number >= 0 AND number <= 23 ),/*找出表所有的日期*/ x1 AS ( SELECT DISTINCT CONVERT(VARCHAR(100), ctime, 23) AS d FROM snake ),/*补全所有日期的24小时*/ x2 AS ( SELECT x1.d , x0.h FROM x1 CROSS JOIN x0 ), x3 AS ( SELECT name , type , num , DATEPART(hour, ctime) AS h FROM snake ),/*整理行转列需要用到的数据*/ x4 AS ( SELECT x2.d , x2.h , x3.name , x3.type , x3.num FROM x2 LEFT JOIN x3 ON x3.h = x2.h )

3.行转列

SELECT ISNULL([0], 0) AS [00] , ISNULL([1], 0) AS [01] , ISNULL([2], 0) AS [02] , ISNULL([3], 0) AS [03] , ISNULL([4], 0) AS [04] , ISNULL([5], 0) AS [05] , ISNULL([6], 0) AS [06] , ISNULL([3], 7) AS [07] , ISNULL([8], 0) AS [08] , ISNULL([9], 0) AS [09] , ISNULL([10], 0) AS [10] , ISNULL([3], 11) AS [11] , ISNULL([12], 0) AS [12] , ISNULL([13], 0) AS [13] , ISNULL([14], 0) AS [14] , ISNULL([3], 15) AS [15] , ISNULL([16], 0) AS [16] , ISNULL([17], 0) AS [17] , ISNULL([18], 0) AS [18] , ISNULL([19], 15) AS [19] , ISNULL([20], 0) AS [20] , ISNULL([21], 0) AS [21] , ISNULL([22], 0) AS [22] , ISNULL([23], 15) AS [23] , type , d AS date FROM ( SELECT d , h , type , num FROM x4 ) t PIVOT( SUM(num) FOR h IN ( [0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23] ) ) t WHERE type IS NOT NULL

来看一下最终效果,只有1天的数据,可能看起来不是很直观。

本文的技术点有2个:

  1.利用数字辅助表补全缺失的记录

  2.pivot行转列函数的使用

以上内容是如何统计全天各个时间段产品销量情况(sqlserver)的全部内容,希望大家喜欢。

时间: 2024-07-29 19:20:18

如何统计全天各个时间段产品销量情况(sqlserver)的相关文章

如何统计全天各个时间段产品销量情况(sqlserver)_MsSql

数据库环境:SQL SERVER 2005 现有一个产品销售实时表,表数据如下: 字段name是产品名称,字段type是销售类型,1表示售出,2表示退货,字段num是数量,字段ctime是操作时间. 要求: 在一行中统计24小时内所有货物的销售(售出,退货)数据,把日期考虑在内. 分析: 这实际上是行转列的一个应用,在进行行转列之前,需要补全24小时的所有数据.补全数据可以通过系统的数字辅助表 spt_values来实现,进行行转列时,根据type和处理后的ctime分组即可. 1.建表,导入数

深度|2016年50家创业公司To B产品使用情况

本文转载自拓扑社,作者赵凡.拓扑社旗下专栏"拓扑档案"在2016年以每周一家的频率,调研了50家创业公司的To B产品使用情况.下面是年终汇总: 我们调研的这50家创业公司主要集中在早期阶段(包括:未融资.天使轮.A轮),占比达到92%.从行业分布来看,调研公司主要分布在企业服务领域,其次是旅游,其他行业分布较为均匀.从团队规模来看,10~50人的公司占比达到62%,50~150人的公司占比达到36%. 创业公司对于toB领域产品的使用情况   1.云服务 在调研的50家创业公司对于云

TD手机占迪信通3G产品销量七成

本报讯 (记者古晓宇)昨天,国内最大通讯连锁企业迪信通公布了截至11月底的3G产品销量.不到联通WCDMA手机产品数量1/6的中国移动TD手机意外占到70%市场份额. 根据统计数据,截至11月30日,仅有8款的中国移动TD手机,销量占到迪信通系统内部3G终端70%销售份额,北京市场平均月销量超过6000台,其中以三星.LG等国际品牌销售贡献最为突出,占到整体TD手机销量80%以上份额. 迪信通集团副总裁齐峰认为,TD手机占据市场最大份额,与中国移动大力开展社会渠道铺货,同时施行大额话费补贴有必然

鸿海精密受苹果产品销量影响营收下滑

尽管提高了苹果iPhone和iPad的生产效率及产量,但是公司业绩还是出现了下滑.这就是全球最大电子产品代工厂商鸿海精密工业股份有限公司(富士康科技集团旗下公司,以下简称鸿海精密)目前的状况.本周三(4月10日)鸿海精密公布的数据显示,其3月份合并单月营收为新台币2603.82亿元,较去年同期下降27.28%:第一季度合并营收为新台币 8089亿元,较去年同期下降19.21%,相比去年第四季度大幅滑落至28.85%.中投顾问高级研究员贺在华在接受<每日经济新闻>记者采访时称,就鸿海精密的业务构

关于“iKuai”路由产品漏洞情况的通报

本文讲的是 关于"iKuai"路由产品漏洞情况的通报,近日,国家信息安全漏洞库(CNNVD)收到北京长亭科技有限公司关于企业级流路由产品"iKuai IK-G20SQL注入漏洞","iKuai小白SQL注入漏洞"和"iKuai小白命令注入漏洞"的情况报送.上述漏洞均由于未对用户输入进行有效验证,导致远程攻击者可利用该漏洞对使用受影响产品进行远程攻击.由于该漏洞影响范围较广,危害较为严重,根据CNNVD相关规定,已对此漏洞进行收

HTC由于产品销量大幅下降致现金流吃紧

路透社报道,据消息人士透露,HTC由于产品销量大幅下降致现金流吃紧,该公司至少关停了四条主要生产线中的一条,被关闭的生产线所占产能为20%.该公司高层也同意采用与苹果类似模式,主抓产品设计,把产品的生产与组装外包出去. 路透社驻台湾记者发现HTC位于台湾桃园的工厂装卸区已关闭,大门上则挂着"暂停使用,谢谢合作"的告示牌. HTC今年推出旗舰机HTC One未能助其走出困境,它还遭遇了零部件外部供应问题以及内部动荡.HTC本月公布了首次季度亏损,截至6月该公司营运现金流也下滑至负7.07

天使之城销量情况大幅下滑,裂帛元气大伤

3月28日消息,有业内人士透露,裂帛收购天使之城后,天使之城销售情况大幅下滑,2013年销售额同比2012年下跌将近40%,致使收购方裂帛显得步履维艰,元气大伤. 数据魔方显示,天使之城2013年在淘宝和天猫平台上的总销售额约为1.51亿. 而据亿邦动力网了解,2012年天使之城在天猫平台成交6千万左右.由于C店并没有在淘宝商品上架中添入天使之城品牌,天使之城C店2012年销售额无法通过相关工具查看.此前裂帛收购天使之城时,媒体披露其C店销售额为1.7亿.如此计算,2012年天猫旗舰店和淘宝C店

Spiceworks数据统计:Win10发布半年使用情况

微软不久之前宣布,全球超过2亿台设备已经运行Windows 10,其中包括0.22亿台企业个人电脑.微软也透露,企业客户当中有76%正在试点部署Windows 10,但是,微软并没有透露有关的其他业务测试或使用该操作系统的许多细节.现在,Spiceworks根据社区IT专业人员调查数据,发布报告,给出了Windows 10发布半年之后使用情况. 根据这份报告显示,40%的IT专业人员预测他们的公司会在Windows 10发布之后一年内采用这款操作系统,而11%的企业在其推出10周左右已经采用Wi

关于爱快iKuai路由产品漏洞情况的通报

近日,国家信息安全漏洞库(CNNVD)收到北京长亭科技有限公司关于企业级流路由产品"iKuai IK-G20SQL注入漏洞","iKuai小白SQL注入漏洞"和"iKuai小白命令注入漏洞"的情况报送.上述漏洞均由于未对用户输入进行有效验证,导致远程攻击者可利用该漏洞对使用受影响产品进行远程攻击.由于该漏洞影响范围较广,危害较为严重,根据CNNVD相关规定,已对此漏洞进行收录,并分配编号CNNVD-201608-553.CNNVD-201608-