使用SQL进行数据分析——窗口函数示例分享

SQL数据分析(简单版) 本文对sql的基本语法,以及实际运用做了通用概述 阅读详情

   窗口函数在日常的处理分析中必不可少,相关详细介绍可查看之前的文章,大家可在公众号(Excel办公小技巧)首页点击右上角搜索按钮进行搜索。今天主要是有节奏的从使用示例中巩固。

【1、从排序开始入门】

    学习窗口函数,怎么能错过排序用法使用。从三种排序函数的功能使用中,还可以掌握窗口函数结构,比如分组、排序参数的使用。

    比如,按订单时间降序排序用户订单数据:

1.1 row_number

    普通排序,重复的编号+1,编号最大值与实际数据行数相同。

select *,row_number() over(partition by userid order by orderdate desc) rnfrom table

图片

1.2 rank

    重复的编号不变,后面的按前面行数+1往后排。​​​​​​​

select *,rank() over(partition by userid order by orderdate desc) rnfrom table

1.3 dense_rank

   重复行编号不变,后面的编号+1,行的数量≥排序编号​​​​​​​

select *,dense_rank() over(partition by userid order by orderdate desc) rnfrom table

【2、使用聚合函数】

    数据统计分析,聚合函数当然必不可少,如何将聚合函数与窗口函数完美结合呢?

    比如,获得用户的销售总额、最大销售、订单数量等等:

2.1 sum函数+窗口函数​​​​​​​

select *,sum(money) over(partition by userid ) rnfrom table

图片

2.2 max函数+窗口函数​​​​​​​

select *,max(money) over(partition by userid ) rnfrom table

图片

2.3 count函数+窗口函数​​​​​​​

select *,count(orderid) over(partition by userid ) rnfrom table

图片

【3、进一步应用】

    以上,可以看到,窗口函数不会改变原有数据的行数,还能帮助我们添加想要的列,而有了新增列,你想做什么,是不是很容易了呢?

3.1 窗口函数+聚合函数

    取销售额前三名的用户订单明细:​​​​​​​

select *from(select * ,DENSE_RANK()over( order by rn desc) rn1   from(select *,sum(money) over(partition by userid ) rn    from hdp_yunchuang_defaultdb.guofeng06_gogo))where rn1<4    

    同样的方法,也可以取到订单数、最大销售额、销售数量、平均销售额等排序后的用户订单明细。

3.2 连续登陆判别

    如何判别客户是否连续下单(天维度)​​​​​​​

select *,lead(orderdate,1,'补足') over(partition by userid order by orderdate asc ) rnfrom table

图片

    当‘orderdate’列和“求和”列的差值=1,说明用户有连续下单行为出现。

    如果是判别某天下单用户在前一天是否有下单,则可以使用lag函数。

3.3 指定连续天数判别

    比如取半个月内,连续15天登陆,14天,...,2天等​​​​​​​

 select *,lead(orderdate,3) over(partition by userid order by orderdate asc ) lianxu4,     lead(orderdate,2) over(partition by userid order by orderdate asc ) lianxu3,     lead(orderdate,1) over(partition by userid order by orderdate asc ) lianxu2,lead(orderdate,0) over(partition by userid order by orderdate asc ) lianxu1 from table

图片

    不为空即为符合要求结果,后面简单处理就可以了(以上,记得先去重,本例未去重,实际计算的不对,再在后续进行天数比较)。

MySQL进阶:SQL高级技巧 - 窗口函数(Window Function) 窗口函数是在满足某种条件的记录集合上执行一个特殊的函数。这个记录集合称为窗口,特殊函数则是在这个窗口上执行的函数。窗口函数可以用于处理分组、排序、累计等复杂的聚合任务,使得查询更加简洁和高效。通过合理设置和管理MySQL的窗口函数,可以有效提升系统的性能和稳定性,减少不必要的查询复杂度。希望本文能帮助你更好地理解和利用窗口函数,让你在数据库管理的道路上更进一步。🌟如果你有任何疑问或想要分享的经验,欢迎留言交流!💬。 阅读详情

相关推荐

深入解析set_clock_groups:异步时钟约束的最佳实践与陷阱规避

本文深入解析了FPGA/芯片设计中set_clock_groups命令在异步时钟约束中的核心作用与最佳实践。文章对比了同步时钟、异步时钟与不重叠时钟的区别,强调了正确使用set_clock_groups避免时序分析陷阱的重要性,并提供了与set_false_path的优先级差异分析及实战规避方法,帮助设计者确保时序收敛与电路可靠性。

weixin_29232121的博客 373

SQL题:求每个自然周的金额汇总和同一种商品被购买的间隔

SQL题:求每个自然周的金额汇总和同一种商品被购买的间隔

weixin_43859562的博客 573

DolphinScheduler+DataX实战:5分钟搞定MySQL到Hive数据同步(附完整JSON配置)

本文详细介绍了如何利用DolphinScheduler与DataX构建企业级数据同步流水线,实现MySQL到Hive的高效数据同步。文章提供了从环境部署、核心组件配置到完整JSON配置的实战指南,并深入探讨了性能调优、增量同步策略以及生产环境下的监控与错误处理,帮助读者快速搭建稳定可靠的数据同步方案。

5b6n7m8的博客 252

MySQL聚合函数与窗口函数的嵌套使用

窗口函数、聚合函数

ooiio的博客 1687

mmpretrain学习笔记

(4)数据集路径 data_root=‘data/imagenet’–》data_root=‘data/Fruits Dataset/images’(7)适当的修改num_workers、epochs、batch_size、lr等。3、训练优化 :梯度下降算法、学习率参数、训练总轮次、学习率变化策略等。my_resnet18_8xb32_in1k.py 完整的配置文件。(6)split=‘train’、split='val’注释掉。2、数据:数据集划分、数据文件路径、批大小、数据增强策略等。

吃葡萄不吐葡萄皮 936

Metal ECO实战:如何在不修改底层掩模的情况下修复芯片时序问题

本文深入探讨了Metal ECO技术在芯片设计中的应用,这是一种在不修改底层晶体管掩模的前提下,仅通过调整金属连线和替换预置填充单元来修复时序问题的“微创手术”。文章详细解析了其原理、适用场景、关键操作流程与命令,并分享了实战中的高级技巧与常见陷阱,为面临流片前时序违例的工程师提供了宝贵的修复指南。

wdx0123456的博客 430

使用SQL数据库进行数据分析

数据分析师在SQL数据库中的主要操作是数据查询和提取,我在写这篇文章时用的是MySQL数据库,文章中的代码在MySQL中可以顺利运行,在其他数据库中运行代码时可能会报错或出现错误结果。

Mikrokosmos_613的博客 2647

S32K3的STCU2模块详解:从硬件FSM到MCAL配置,搞懂BIST在线测试全流程

本文深入解析S32K3系列MCU的STCU2模块,从硬件FSM架构到MCAL配置,详细讲解BIST在线测试全流程。通过分区的安全策略和实战代码示例,帮助开发者掌握汽车电子系统中的功能安全实现,提升系统可靠性和安全性。

weixin_42525328的博客 444

快速掌握用SQL进行数据分析

在SQL Server中,可以使用 YEAR() 、 MONTH() 函数,如 SELECT YEAR(sale_date) AS year, MONTH(sale_date) AS month, SUM(sales_amount) AS total_sales FROM sales_data GROUP BY YEAR(sale_date), MONTH(sale_date)。- 时间序列窗口函数(如果数据库支持):对于更复杂的时间序列分析,如移动平均等,一些高级数据库支持窗口函数。

alittlehippo的博客 1228

【考试大纲】中级多媒体应用设计师考试大纲

中级多媒体应用设计师考试大纲

邓邓子的博客 382

AI爬虫:一文讲通AI爬虫技术和原理,及34个AI爬虫工具推荐

AI 爬虫 是一种结合了传统网络爬虫技术和人工智能(AI)技术的工具,能够更智能、高效地从网页中提取和处理数据。与传统爬虫相比,AI 爬虫能够更好地处理动态内容、复杂网页结构以及非结构化数据,同时具备数据清洗、分类、情感分析等高级功能。

数据知道的博客 1万+

数据分析小白入门:SQL入门核心知识点

作为一名数据分析的小白,最近学习和了解了数据分析中SQL入门相关的一些知识,在这篇博客中我将用通俗易懂的方式来与大家分享这几天我的所见所学。

2401_84838416的博客 1671

HSM 网络安全 信息安全

HSM HSM信息安全功能 汽车电子网络安全中HSM 的应用场景 选择适合汽车电子网络安全的 HSM 符合汽车安全标准和法规要求的HSM HSM 在汽车电子网络安全中的可靠性和安全性 评估汽车电子网络的安全性 汽车 HSM(Hardware Security Module)模块开发 汽车 HSM(Hardware Security Module)模块测试

天赐好车的博客 1236

全面解析SQL窗口函数提升数据分析效率的关键技巧

在OVER()子句中,ORDER BY不仅用于对分区内的行进行排序,更重要的是,当与框架(Frame)子句结合使用时,它可以定义动态的计算窗口。窗口函数(Window Function)是SQL中一种强大的工具,它允许用户在不紧缩查询结果集的情况下,对一组相关的行(称为“窗口”或“框架”)进行计算。PARTITION BY子句是窗口函数的精髓之一,它用于将数据集划分为更小的、逻辑上的分区,函数计算将在每个分区内独立进行。通过这些实践,可以确保窗口函数在提供强大分析能力的同时,保持优异的查询性能。

lovesco的博客 405

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

有幸去华为面试数据分析岗,看到SQL后我拒绝了

◆◆◆ ◆◆面试真题今年8月,有幸参加了华为的面试,虽然是外包身份,但是大家都知道,大公司对于外包的面试其实就是华为内部人员来进行。腾讯也是如此!岗位是数据分析,记忆最深刻的就是...

Eric_data的博客 5425

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

数据分析SQL查询:一文带你入门到掌握

字符串函数substring --截取字符串string,从start开始的length个字符,类似excel的midleft --截取字符串string,从最左边开始的length个字符,类似excel的leftright --截取字符串string,从最右边开始的length个字符,类似excel的rightinstr --MYSQL中查找string1在string2中出现的位置insert --MYSQL中删除指定位置的的指定个数字符,并在指定位置处插入新字符。...

zl5186888的博客 432

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

用快马AI 3分钟搞定SQL窗口函数:电商数据分析实战

通过平台的一键部署功能,这个分析看板可以直接生成在线访问链接。前端用Ant Design Table展示数据,ECharts绘制趋势图,还加了个月份选择器实现动态过滤。不需要折腾本地环境,不用手动写大量样板代码,复杂的窗口函数也能通过对话方式轻松实现。对于需要快速产出可视结果的场景,这种开发体验真的很高效。最近在做一个电商数据分析看板的需求,需要实现商品销售排名、移动平均和累计占比分析。需要先提取年月作为分区键,然后对每个月的商品按销售额排序。的AI辅助功能,整个过程变得异常轻松。这里分享下我的实践过程。

SnowflakeJaguar14的博客 618

举例详解数据分析会用到哪些SQL技能?

本文首发个人知乎https://zhuanlan.zhihu.com/p/137328389和个人微信公众号 呆呆玩数据 【背景介绍】 在一家知名电商企业的BI部门实习四个多月,岗位为数据分析。日常工作中打交道最多的就是SQL和EXCEL,在实习之前SQL技能只会简单的增删改查语句,第一周实习经理甩了一份业务常见绩效取数的SQL代码给我,三四百行的代码看得头昏眼乱,惊讶到简简单单的SQL也能写...

weixin_42009765的博客 991

SQL面试题整理:进阶部分

现有原始数据表如下所示,包含一个时间段内每天的预算金额与所属分类信息: 表名:databasetable +───────────+──────────+───────────+ | Date | buget | category | +───────────+──────────+───────────+ | 2020-8-4 | 2574.2 | A | | 2020-8-5 | 260.38 | A | | 2020-8-6 | 9045

Smilecoc的博客 5383

execl筛选去重_有幸去华为面试数据分析岗,看到SQL后我拒绝了

面试真题今年8月,有幸参加了华为的面试,虽然是外包身份,但是大家都知道,大公司对于外包的面试其实就是华为内部人员来进行。腾讯也是如此!岗位是数据分析,记忆最深刻的就是考察了SQL行转列。SQL,无疑是在数据分析面试过程中的重头戏。很多人说,SQL不重要,不能只做提数机器;还有人说,面试不需要准备SQL,只要你懂方法就足够了。呵呵一笑置之!如果你真的懂数据分析的方法与思路,还愁找不到工作吗?还会整天...

weixin_39603217的博客 87

效率真高!众安保险数据分析岗(实习)面试通过了,分享一下面试经验!

最近,我们社群组织了一场技术&面试讨论会,邀请了一些互联网大厂同学、参加社招和校招面试的同学,针对新手如何入门数据分析、机器学习算法、该如何备战、面试常考点分享等热门话题进行了深入的讨论。基于社群的讨论,今天我整理了一个同学的面试题,分享给大家,希望对后续找工作的有所帮助。今天面了众安保险的数据分析岗,感觉很顺利,但是拢共就面了20min,还是有点没底更新一下:过啦,当天下午三点面 五点就通知通过了!!效率真高。面试流程:自我介绍过去实习中影响最深刻的一个项目两个简单的SQL,口述就行。

Python数据挖掘 2179

从零构建分析型SQL:窗口函数在报表开发中的5大杀手级应用

掌握sql窗口函数使用,轻松解决复杂报表难题。详解排序、分组统计、累计计算等5大应用场景,提升SQL分析效率。无需自连接与临时表,代码更简洁高效。数据分析师必备技能,值得收藏。

BreakNexus的博客 820

sql max同一行_有幸去华为面试数据分析岗,看到SQL后我拒绝了

◆◆◆ ◆◆面试真题今年8月,有幸参加了华为的面试,虽然是外包身份,但是大家都知道,大公司对于外包的面试其实就是华为内部人员来进行。腾讯也是如此!岗位是数据分析,记忆最深刻的就是考察了SQL行转列。SQL,无疑是在数据分析面试过程中的重头戏。很多人说,SQL不重要,不能只做提数机器;还有人说,面试不需要准备SQL,只要你懂方法就足够了。呵呵一笑置之!如果你真的懂数据分析的方法与思...

weixin_39695490的博客 250

数据分析师面试必备,数据分析面试题集锦(一)

,“针对实际的业务场景,如何使用数据分析工具去分析?loc是通过行标签索引index来索引行数据,标签索引可以是字符,可以是整数,iloc是根据行号来索引,行号从0开始,逐次加1,iloc的列参数只能是整数,不能是字符,当用行号索引的时候, 尽量用 iloc 来进行索引,而用标签索引的时候则用 loc。

weixin_42684533的博客 1669

你还在简历中写熟练Sql吗

将近两个月没有写文章了,真的堕落,平时每天在单位天天写Sql,总感觉自己的Sql还可以,相信大部分都有这个感觉,每天都在写,别人一问Sql怎么样,还可以,一到真格时,GG了,度娘救救我。 曾经,一个Sql研究半天,嘿,终于搞懂了,一星期过后,又有新的业务需求,但Sql逻辑基本一致,哎,我上周怎么写的了,翻出以前写的,呵呵呵,这是个嘛呀。。。。 ...

小肖学数据分析的博客 4545
上一篇: 超实用的vlookup函数技巧,还不清楚的快来看看吧
下一篇: CELL函数,学会了也不一定会用,会了总会用到
TheLittlePython
博客等级 码龄9年 47粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值