「数据分析」Sqlserver中的窗口函数的精彩应用-问题篇

最近看到PowerBI圈子在讨论最大连续区间段的问题,即某人最大的全勤时间,某人的最长的连续打卡时间等问题的计算,佐罗老师给出了10万倍性能的答案。这个问题也引发了笔者一些兴趣,隐约记得以前看过Sqlserver的窗口函数的应用场景中有这方面的知识,这周末也花了一天时间重新温故了一翻,非常有味道,在此打算和大家一同分享一下。时间有限,首篇只能抛出问题,下一篇再贴出答案。

PowerBI佐罗老师的引文

笔者的留言,答应过的事情,也要认真去兑现

在此强烈推荐一下此书,老外Sqlserver的MVP写的,非常精彩。正因为看过这相关的书籍,才不断地向身边人推荐,做数据分析的,最好的选择是Sqlserver做数据库,无论是存储和查询都比ACCESS/Sqlite/MySQL等数据库要优秀得多。

Sqlserver同样有免费版Sqlserver Express,支持全系列的T-SQL查询,足以替代MySQL这些所谓的免费数据库。

老外的书籍,此篇的案例出自出书

书的目录:窗口函数的应用场景

正因为Sqlserver数据库不止于只是存储功能,其窗口函数的扩展,天生是为数据分析服务的。

在数据库环境里,轻松处理百万级别的数据,所以以上佐罗老师测试的6万条数据3秒完成,很凶残,换作Sqlserver的窗口函数来处理,600万条数据,也就一瞬间时间完成(下篇测试时再看具体时间),只能用上极度凶残来形容。

最关键的是无需天书式的公式完成,这样的天书,没有推广价值,也不符合微软爸爸的赋能普通人可掌握的思想。

所以在此也引申出一个话题,要实现某种特定场景的需求,是否真要钻牛角尖使用一种方式,例如经常听到在Excel群体里的只能用函数,不能用VBA去做。换作考试时代,这样的练习还是有必要的,但在职场时间,能够快速、简单完成手头上的工作任务,那才是王道,至于如何实现,条条大道通罗马,何必仅限于某某方法呢。

善于使用手中的各种工具,而不是对某一工具过度地使用。

凄迷于钻研深渊无底洞,这些除了炫技和培训机构去做唬人外,在实际工作场合中真心不建议。

案例题目

题目1:数据差距
数据源是一系列的连续数字,中途有断开,最终需要加工出断开的数据区域。
初始数据源

期望数据结果

题目2:数据岛
同样是上述的数据源,但这次是统计出各连续的数据区域片段,期望数据结构如下:

期望数据结果2

题目1和题目2即是佐罗老师他所引出的问题,统计各个连续时间段的区间,若需要最大次数这类的答案,只需将结构区减去开始区即可,更多实际的应用场景需要将开始区和结束区一同罗列出来。当然数据源还没有做分组处理,如上述的情况只是针对一次的数据统计,而不是实际上的多个用户各自的统计结果,在答案篇我尝试去测试,今天时间来不及,大家去思考时,不妨也增加难度加上多个用户的分析情况。如数据源如下:

多个用户的统计数据间隔和数据岛问题

结语

在笔者眼中,Sqlserver是难得的数据分析利器,性能强大,功能丰富,大家不妨先预习一下了解下Sqlserver窗口函数的知识,有兴趣的不妨也购买下本文提及的优秀图书。答案将在下期尽可能详尽地讲述。

关于Excel催化剂

Excel催化剂先是一微信公众号的名称,后来顺其名称,正式推出了Excel插件,插件将持续性地更新,更新的周期视本人的时间而定争取一周能够上线一个大功能模块。Excel催化剂插件承诺个人用户永久性免费使用!

Excel催化剂插件使用最新的布署技术,实现一次安装,日后所有更新自动更新完成,无需重复关注更新动态,手动下载安装包重新安装,只需一次安装即可随时保持最新版本!

Excel催化剂插件下载链接:https://pan.baidu.com/s/1Iz2_NZJ8v7C9eqhNjdnP3Q

联系作者

公众号

取名催化剂,因Excel本身的强大,并非所有人能够立马享受到,大部分人还是在被Excel软件所虐的阶段,就是头脑里很清晰想达到的效果,而且高手们也已经实现出来,就是自己怎么弄都弄不出来,或者更糟的是还不知道Excel能够做什么而停留在不断地重复、机械、手工地在做着数据,耗费着无数的青春年华岁月。所以催生了是否可以作为一种媒介,让广大的Excel用户们可以瞬间点燃Excel的爆点,无需苦苦地挣扎地没日没夜的技巧学习、高级复杂函数的烧脑,最终走向了从入门到放弃的道路。

最后Excel功能强大,其实还需树立一个观点,不是所有事情都要交给Excel去完成,也不是所有事情Excel都是十分胜任的,外面的世界仍然是一个广阔的世界,Excel只是其中一枚耀眼的明星,还有其他更多同样精彩强大的技术、工具等。*Excel催化剂也将借力这些其他技术,让Excel能够发挥更强大的爆发!

关于Excel催化剂作者

姓名:李伟坚,从事数据分析工作多年(BI方向),一名同样在路上的学习者。
服务过行业:零售特别是鞋服类的零售行业,电商(淘宝、天猫、京东、唯品会)

技术路线从一名普通用户,通过Excel软件的学习,从此走向数据世界,非科班IT专业人士。
历经重重难关,终于在数据的道路上达到技术平原期,学习众多的知识不再太吃力,同时也形成了自己的一套数据解决方案(数据采集、数据加工清洗、数据多维建模、数据报表展示等)。

擅长技术领域:Excel等Office家族软件、VBA&VSTO的二次开发、Sqlserver数据库技术、Sqlserver的商业智能BI技术、Powerbi技术、云服务器布署技术等等。

2018年开始职业生涯作了重大调整,从原来的正职工作,转为自由职业者,暂无固定收入,暂对前面道路不太明朗,苦重新回到正职工作,对Excel催化剂的运营和开发必定受到很大的影响(正职工作时间内不可能维护也不可能随便把工作时间内的成果公布于外,工作外的时间也十分有限,因已而立之年,家庭责任重大)。

和广大拥护者一同期盼:Excel催化剂一直能运行下去,我所惠及的群体们能够给予支持(多留言鼓励下、转发下朋友圈推荐、小额打赏下和最重点的可以和所在公司及同行推荐推荐,让我的技术可以在贵司发挥价值,实现双赢(初步设想可以数据顾问的方式或一些小型项目开发的方式合作)。

姓名:李伟坚 从事数据分析工作多年(BI方向),一名同样在路上的学习者。 技术路线从一名普通用户,通过Excel软件的学习,从此走向数据世界,非科班IT专业人士。 历经重重难关,终于在数据的道路上达到技术平原期,学习众多的知识不再太吃力,同时也形成了自己的一套数据解决方案(数据采集、数据加工清洗、数据多维建模、数据报表展示等)。 擅长技术领域:Excel等Office家族软件、VBAVSTO的二次开发、Sqlserver数据库技术、Sqlserver的商业智能BI技术、Powerbi技术、云服务器布署技术等等。 2018年起成为自由职业工作者,期待Excel催化剂可以一直能运行下去,我所惠及的群体们能够给予支持(多留言鼓励下、转发下朋友圈推荐、小额打赏下和最重点的可以和所在公司及同行推荐推荐,让我的技术可以在贵司发挥价值,实现双赢,初步设想可以数据顾问的方式或一些小型项目开发的方式合作。
原文地址:https://www.cnblogs.com/ExcelCuiHuaJi/p/11225175.html