SQL窗口函数-截止至某天的累计值
窗口函数不仅能实现排序,还能实现累计功能,作用强大。
下面的例子使用窗口函数实现累计功能,看似复杂,但是其实不难,小白也能秒懂!
———————————— 我是例子分界线 ——————————————
有个课程学习类APP,用户可以在上面做题。
不存在没有登录却做题的情况,但是存在登录了没做题的情况。
有一个登录(login)记录表:
第1行表示user_id为2的用户在2020-10-12使用了客户端id为1的设备登录了APP。
有一个做题(passing_number)表:
第1行表示user_id为2的用户在2020-10-12在APP上做对了4个题目。
第3行表示user_id为1的用户在2020-10-13在APP上做对了0个题目。
还有一个用户(user)表:
现在需要查询做题信息,包括: 用户的名字,以及截止到某天,累计总共做对过多少题,并且查询结果先按照日期升序排序,再按照姓名升序排序,有登录却没有做对题的那天的数据不需要输出。
输出需要像下面这样的效果:
————————————— 我是题解分界线 ———————————————
要统计用户截止到某天总共做对的题数,用窗口函数是其中一种简洁的解法。首先,用窗口函数从passing_number表筛选出,每个用户在登录过的每个日期(日期按从小到大顺序排列),做对的题目的累计值。
select user_id,date,
sum(number) over(partition by user_id order by date) ps_num
from passing_number
把上面的查询语句命名为表a,和user表连接,得到用户的名字。因为要先按照日期升序排序,再按照姓名升序排序,所以最后order by date,u_n。
所以最后完整的查询语句为:
select u.name u_n,a.date date,a.ps_num ps_num from
(select user_id,date,
sum(number) over(partition by user_id order by date) ps_num
from passing_number)a
join user u on u.id=a.user_id
order by date,u_n
有木有发现根本没用到login表?因为有登录却没有做对题的那天的数据不需要输出,所以login表只是虚晃一枪,是个多余条件!小伙伴们有木有想复杂呢?大神们还有木有更好的解法分享?
SQL窗口函数-截止至某天的累计值相关推荐
- sql 按日期或按顺序统计累计值
sql 按日期,或按顺序,统计每一天的累计值. 效果如图表名table,左边红框框代表每天的arpu值,右边为每天的累计arpu值. CREATE TABLE table1 AS select b.p ...
- 【SQL】窗口函数:求数据的整体百分比、整体累计值,组内累计值和组内累计百分比...
〇.概述 1.所需资料 窗口函数实现组内百分比.累计值.累计百分比:https://blog.csdn.net/weixin_39751959/article/details/88828922 2.背 ...
- 窗口函数:实现组内百分比、累计值、累计百分比
0 前言 最近做数据分析,需要求每一组内的元素的百分比以及累计百分比,实在想不出怎么使用sql实现,就先将数据导出,然后使用excel计算.趁着夜深人静的时候,思维敏捷,尝试一下使用窗口函数实现一下, ...
- SQL窗口函数-聚合窗口函数
关于窗口函数的基础,请看文章SQL窗口函数 许多常见的聚合函数也可以作为窗口函数使用,包括AVG().SUM().COUNT().MAX()以及MIN()等函数. 案例分析 案例使用的示例表 下面的查 ...
- MySQL - SQL窗口函数
1.应用场景 窗口函数解决的问题包括: 1)排名问题 2)top N问题 应用工作中, 面试中. 2.学习/操作 前言 MySQL版本8已支持窗口函数这个功能, 如果低于该版本, 会出现SQL报错! ...
- 用sql语句实现按时间求累计值
用sql语句实现按时间求累计值 日期 数值 <?xml:namespace prefix = st1 />2005-5-1 2.4 2005-5-2 ...
- Hive SQL 窗口函数
本文首发:大数据每日哔哔-Hive SQL 窗口函数 Hive 的窗口函数 在 SQL 中有一类函数叫做聚合函数,例如 sum().avg().max().min() 等等,这类函数可以将多行数据按照 ...
- python 窗口函数_太好用了!Python中8种流行的SQL窗口函数了解一下!
有关如何在业务分析中利用Pandas来有效复制最常用的SQL窗口函数的教程. 任何致力于构建公司KPI或创建分析随着时间推移的业务绩效的数据分析人员都知道SQL窗口功能是一个强大的工具.使用它们的真正 ...
- SQL 窗口函数速查表
文章目录 窗口函数概述 PARTITION BY ORDER BY 窗口大小 SQL 子句逻辑执行顺序 常用窗口函数 排名窗口函数 取值窗口函数 聚合窗口函数 大家好!我是只谈技术不剪发的 Tony ...
最新文章
- 利用numpy对已知样本点进行多项式拟合
- Shell编程基础---shell的结构、执行及变量
- atitit.词法分析的实现token attilax总结
- spring集成struts2
- 【源码】2012年斗地主结构算法公布(斗地主结构算法)
- Hadoop DataNode : Address already in use
- visual studio 2017 连接 SQL Server
- Docker如何更改存储库名称或重命名图像?
- 用CentOS 6快速配置一台企业级Web代理服务器
- 单源最短路(spfa+Dijkstra)附数据
- 【读书笔记《Android游戏编程之从零开始》】9.游戏开发基础(如何快速的进入 Android 游戏开发)
- 老男孩Python 第7期 老男孩Python培训视频教程
- ADCS relay
- dnf第七章waiguaⅢ∨dnf第七章好感度【=dnf第七章免费外挂
- 去八达岭看红叶(攻略)
- 【Proteus仿真】51单片机+直流电机PWM调速实验
- win32 8.2 使用通用对话框
- WebRTC学习06----1对1视频通信实例
- 考虑分布式光伏储能系统的优化配置方法(源码公开)
- 【已解决】购买新电脑激活office时微软账号出现异常怎么办?
热门文章
- 《CCIE路由和交换认证考试指南(第5版) (第1卷)》——1.5节SPAN、RSPAN及ERSPAN...
- 【有利可图网】PS实战教程35:用PS快速抠透明的水花
- @zxing/library插件在H5页面上调用摄像头进行扫码识别解决方法,以及对华为手机的兼容
- 【fake location破解版】加强版随风2.0定位助手使用方法
- 01 | Linux详细简介
- PostgreSQL的ON CONFLICT
- 看纷享销客如何布局连接型CRM
- 微信Mac版 v3.0.0正式版上线!mac电脑上也能在朋友圈点赞和互动!
- frp Connection refused
- 树和二叉树的基本概念和相关计算