首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

小红书大数据面试SQL-查询每个用户第一条最后一条记录

一、题目 现有一张订单表 t_order 有订单ID、用户ID、商品ID、购买商品数量、购买时间,请查询出每个用户第一条记录最后一条记录。...:55:00.0 | +-----------+----------+-------------+-----------+------------------------+ 二、分析 取出符合条件整行记录...这里需要第一条最后一条,因为无法提前预知每个用户行数,所以使用两次row_number进行开窗,排序方式根据时间进行正向排序逆向排序,分别取出行号为1借口 维度 评分 题目难度 ⭐️⭐️⭐️ 题目清晰度...----------+----------+-------------+-----------+------------------------+---------+----------+ 2.取出第一条最后一条记录...限制asc_rn=1取第一条,desc_rn=1 取最后一条 执行SQL select order_id, user_id, product_id, quantity

13510

SQL总结大厂真题-查询每个用户第一条最后一条记录

1.题目 现有一张订单表 t_order 有订单ID、用户ID、商品ID、购买商品数量、购买时间,请查询出每个用户第一条记录最后一条记录。...样例数据如下: | order_id | user_id | product_id | quantity | purchase_time | |----------|---------|--...,一般都会用到开窗函数,本题也是如此,row_number(); 本题特殊之处在于,同一个规则,两种不同排序方式;一种解决方案是union all,另外一种方式是,直接开窗两次获得两个不同字段,...然后使用or获取最后结果。...两种方案得出结果不同,因为如果存在用户只有一条记录,则第一种解决方案会有两条相同记录(当然,如果使用union可以避免),第二种方法则直接去重了; 个人不是很喜欢这个题目,不知道具体考点,题目还容易有歧义

53610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    盘点一个工作中Python自动化处理实战问题(上篇)

    问题描述: 数据在提供数据表中,在表有编号、环节、审核人、金额、结束时间5列,对【编号、环节、审核人、金额】四条件进行分组,分组内结束时间升序排列,分组内结束时间相差20秒以内,只保留第一条记录。...大佬再请问下 分组内结束时间相差20秒以内,只保留第一条记录 这个怎么实现? 这个做出来老是有问题 有个窗口函数 用了数据又对不太上。...后来【巭孬】说到:先排序,再求上下行时间差,命令好像是diff?,然后再取时间差在20秒内,再提取出第一条。...,删除时间差小于20秒记录,只保留第一条记录 diff = group.groupby('编号')['结束时间'].diff() mask = (diff.dt.total_seconds...这篇文章主要盘点了一个工作中Python自动化处理实战问题,文中针对该问题,给出了具体解析代码实现,帮助粉丝顺利解决了问题。

    9110

    盘点一个工作中Python自动化处理实战问题(番外篇)

    问题描述: 数据在提供数据表中,在表有编号、环节、审核人、金额、结束时间5列,对【编号、环节、审核人、金额】四条件进行分组,分组内结束时间升序排列,分组内结束时间相差20秒以内,只保留第一条记录。...大佬再请问下 分组内结束时间相差20秒以内,只保留第一条记录 这个怎么实现? 这个做出来老是有问题 有个窗口函数 用了数据又对不太上。...粉丝回答是第1个第3个。最终效果是:实现分组内任意2个时间点时间差都是大于20s。...pandas被你们玩出花来了。 三、总结 大家好,我是皮皮。这篇文章主要盘点了一个工作中Python自动化处理实战问题,文中针对该问题,给出了具体解析代码实现,帮助粉丝顺利解决了问题。...最后感谢粉丝【哎呦喂 是豆子~】提出问题,感谢【小小明】、【瑜亮老师】、【隔壁山楂】、【郑煜哲·Xiaopang】、【巭孬】给出思路,感谢【莫生气】、【猫药师Kelly】、【皮皮】、【冫马讠成】等人参与学习交流

    14110

    pandas 入门2 :读取txt文件以及描述性分析

    本文主要会涉及到:读取txt文件,导出txt文件,选取top/bottom记录,描述性分析以及数据分组排序; ? 创建数据数据集将包括1,000个婴儿名称该年度记录出生人数(1880年)。...使用zip函数合并名称出生数据集。 ? 我们基本上完成了创建数据集。我们现在将使用pandas库将此数据集导出到csv文件中。 df将是一个 DataFrame对象。...该read_csv功能处理第一条记录在文本文件中头名。这显然是不正确,因为文本文件没有为我们提供标题名称。...为了纠正这个问题,我们将header参数传递给read_csv函数并将其设置为None(在python中表示null) ? 现在让我们看看dataframe最后五个记录 ?...我们已经知道有1,000条记录而且没有任何记录丢失(非空值)。可以验证“名称”列仍然只有五个唯一名称。 可以使用数据unique属性来查找“Names”列所有唯一记录。 ?

    2.8K30

    盘点一个工作中Python自动化处理实战问题(中篇)

    问题描述: 数据在提供数据表中,在表有编号、环节、审核人、金额、结束时间5列,对【编号、环节、审核人、金额】四条件进行分组,分组内结束时间升序排列,分组内结束时间相差20秒以内,只保留第一条记录。...大佬再请问下 分组内结束时间相差20秒以内,只保留第一条记录 这个怎么实现? 这个做出来老是有问题 有个窗口函数 用了数据又对不太上。...针对上一篇文章中【瑜亮老师】答案,【小小明】大佬继续找他代码基础上进行了优化,优化后代码如下所示: 简化后如下: import pandas as pd def filter_rows(group...这篇文章主要盘点了一个工作中Python自动化处理实战问题,文中针对该问题,给出了具体解析代码实现,帮助粉丝顺利解决了问题。...最后感谢粉丝【哎呦喂 是豆子~】提出问题,感谢【小小明】、【瑜亮老师】、【隔壁山楂】、【郑煜哲·Xiaopang】、【巭孬】给出思路,感谢【莫生气】等人参与学习交流。

    14210

    数据实战【千亿级数仓】阶段六

    在日志数据分析中,通常把前后两条访问记录时间差在30分钟以内算成一次会话。如果超过30分钟,则把下次访问算成新会话开始。...大致步骤如下: 在所有访问日志中找出该用户所有访问记录 把该用户所有访问记录按照时间正序排序 计算前后两条记录时间差是否为30分钟 如果小于30分钟,则是同一会话session延续 如果大于30分钟...,则是下一会话session开始 用前后两条记录时间差算出上一步停留时间 最后一步只有一步 业务默认指定页面停留时间60s 3....为了方便大家理解,如何将原始数据通过不同预处理,将数据分别写入到ods3个不同功能表中,送上一张图来帮助大家理清楚这个流程。 ?...// 3.2 数据量有可能是多条 1 2 3 4 5 // 先获取第一条数据时间 // 若是第一条数据 我们跳过第一天 进入第二个循环

    47120

    python 办公自动化系列 (1) 从22053条数据中统计断网次数并计算平均断网时间

    文章目录 一、需求 二、python代码实现 一、需求 aliyun-ddns.html文件里有服务器相关一些日志信息,具体如下: [rt1o1g7ol5.png] 需求:找到通网后第一个日志断网前最后一个日志...,然后提取 date 列时间做减法,获得本次断网时间,之后用同样方法统计每次断网时间,最后计算断网次数断网时间平均值。...可以看到,总共有22053条数据,人工去找断网前最后一个日志通网后第一个日志,再算断网时间,想起来都挺费劲,还很无聊。...任务拆解 如何找到断网前最后一个日志通网后第一个日志 # 通网日志 content列字符串 len('2020/08/25 13:30:58 m.hlnas.top 112.226.49.5...保存每次记录如下: [g8gpbsgccz.png] [p3x6pdwnx9.gif] 作者:叶庭云 公众号:微信搜一搜【修炼Python】 分享Python爬虫、数据分析、数据可视化、机器学习有关知识实例

    68930

    Python 文件处理

    somefile.csv", newline='') as infile: reader = csv.reader(infile, delimiter=',', quotechar='"') CSV文件第一条记录通常包含列标题...检查文件中第一个记录 data[0] ,它必须包含感兴趣列标题: ageIndex = data[0].index("Answer.Age") 最后,访问剩余记录中感兴趣字段,并计算显示统计数据...在第6章,你将了解如何在更为复杂项目中使用pandas数据frame,完成那些比对几列数据进行琐碎检索要高端得多任务。 2....Json文件处理 需要注意一点就是某些Python数据类型结构(比如集合复数)无法存储在JSON文件中。因此,要在导出到JSON之前,将它们转换为JSON可表示数据类型。...Python对象 备注: 把多个对象存储在一个JSON文件中是一种错误做法,但如果已有的文件包含多个对象,则可将其以文本方式读入,进而将文本转换为对象数组(在文本中各个对象之间添加方括号逗号分隔符

    7.1K30

    Pandas数据清洗,我一般都这么干……【文末送书】

    ;对于取值离散情形,可判断取值是否在指定候选集之间,例如性别的取值范围可能包括男、女未知三种。...例如城市抓拍过车记录中,对于一条包括出发时间到达时间车辆行驶记录,当到达时间小于等于出发时间时,或者到达时间与出发时间时间差小于某个阈值时,都可以认为是异常记录 基于特定业务含义,单条记录并无异常...最后,感谢北京大学出版社赞助,送书《Python数据分析全流程实操指南》1本: 内容简介: 本书基于Python3.7版本软件编写,全书主要围绕整个数据分析方法论标准流程,为读者重点展示了Python...本书首先介绍了数据分析方法论,给读者介绍了具体数据分析挖掘标准流程,接着介绍了Python常用工具包,包括科学计算库NumPy、数据分析库Pandas数据挖掘库Scikit-Learn,以及数据可视化库...,深入浅出、循序渐进地介绍Python数据分析全过程。

    94121

    pandas dataframe 时间字段 diff 函数

    pandas pandas数据处理利器,非常方便进行表格数据处理,用过的人应该都很清楚,没接触可以自行查阅pandas 官网。...需求介绍 最近在使用 pandas 过程中碰到一个问题,需要计算数据中某时间字段下一行相对上一行时间差,之前有用过 dataframe diff 函数,但是官方教程里只介绍了数值字段操作,即结果为当前行减去上一行差值...于是我使用了最原始方式,循环遍历 dataframe 每一行,逐行求时间差,将其存入数组中,最后此数组即为结果。...days 00:20:00 9 1 days 00:00:00 Name: time, dtype: timedelta64[ns] 从中我们可以看出, diff 操作对于时间字段确实有效,并真实得到了上下行之间时间差...One more thing 我司推出了悟空流程化数据处理平台,访问地址:https://wk.phitrellis.com/,无需复杂 Excel 公式编程,即可完成上述计算时间差以及其他常用数据分析操作

    1.3K150

    pandas dataframe 时间字段 diff 函数

    pandas pandas数据处理利器,非常方便进行表格数据处理,用过的人应该都很清楚,没接触可以自行查阅pandas 官网。...需求介绍 最近在使用 pandas 过程中碰到一个问题,需要计算数据中某时间字段下一行相对上一行时间差,之前有用过 dataframe diff 函数,但是官方教程里只介绍了数值字段操作,即结果为当前行减去上一行差值...于是我使用了最原始方式,循环遍历 dataframe 每一行,逐行求时间差,将其存入数组中,最后此数组即为结果。...days 00:20:00 9 1 days 00:00:00 Name: time, dtype: timedelta64[ns] 从中我们可以看出, diff 操作对于时间字段确实有效,并真实得到了上下行之间时间差...One more thing 我司推出了悟空流程化数据处理平台,访问地址:https://wk.phitrellis.com/,无需复杂 Excel 公式编程,即可完成上述计算时间差以及其他常用数据分析操作

    1.9K41

    盘点一个工作中Python自动化处理实战问题(下篇)

    问题描述: 数据在提供数据表中,在表有编号、环节、审核人、金额、结束时间5列,对【编号、环节、审核人、金额】四条件进行分组,分组内结束时间升序排列,分组内结束时间相差20秒以内,只保留第一条记录。...大佬再请问下 分组内结束时间相差20秒以内,只保留第一条记录 这个怎么实现? 这个做出来老是有问题 有个窗口函数 用了数据又对不太上。...粉丝回答是第1个第3个。最终效果是:实现分组内任意2个时间点时间差都是大于20s。 【小小明】大佬这里考虑到了上面【隔壁山楂】疑问,做了特殊情况引申:下面增加这三行数据进行测试。...样本数据还不够 这种情况实际上也是有这个情况 这个样本是拿到一个测试题 日常实操有点接近 拿出去问问大佬们 学习学习经验。 三、总结 大家好,我是皮皮。...这篇文章主要盘点了一个工作中Python自动化处理实战问题,文中针对该问题,给出了具体解析代码实现,帮助粉丝顺利解决了问题。

    10810

    盘点一个工作中Python自动化处理实战问题(下篇)

    问题描述: 数据在提供数据表中,在表有编号、环节、审核人、金额、结束时间5列,对【编号、环节、审核人、金额】四条件进行分组,分组内结束时间升序排列,分组内结束时间相差20秒以内,只保留第一条记录。...大佬再请问下 分组内结束时间相差20秒以内,只保留第一条记录 这个怎么实现? 这个做出来老是有问题 有个窗口函数 用了数据又对不太上。...粉丝回答是第1个第3个。最终效果是:实现分组内任意2个时间点时间差都是大于20s。 【小小明】大佬这里考虑到了上面【隔壁山楂】疑问,做了特殊情况引申:下面增加这三行数据进行测试。...样本数据还不够 这种情况实际上也是有这个情况 这个样本是拿到一个测试题 日常实操有点接近 拿出去问问大佬们 学习学习经验。 三、总结 大家好,我是皮皮。...这篇文章主要盘点了一个工作中Python自动化处理实战问题,文中针对该问题,给出了具体解析代码实现,帮助粉丝顺利解决了问题。

    10210

    pandas中基于范围条件进行表连接

    作为系列第15期,我们即将学习是:在pandas中基于范围条件进行表连接。...表连接是我们日常开展数据分析过程中很常见操作,在pandas中基于join()、merge()等方法,可以根据左右表连接依赖字段之间对应值是否相等,来实现常规表连接。...但在有些情况下,我们可能需要基于一些“特殊”条件匹配,来完成左右表之间表连接操作,譬如对于下面的示例数据框demo_leftdemo_right: 假如我们需要基于demo_leftleft_id...right_id进行连接,再在初步连接结果表中基于left_id或right_id进行分组筛选运算,过滤掉时间差大于7天记录: 而除了上面的方式以外,我们还可以基于之前文章中给大家介绍过pandas...功能拓展库pyjanitor中「条件连接方法」,直接基于范围比较进行连接,且该方式还支持numba加速运算: · 推荐阅读 · 如何快速优化Python导包顺序 Python中临时文件妙用

    23750

    如何Python Pandas 分析犯罪记录开放数据

    本文,我借鉴 Richard 分析思路,换成用 Python数据分析包 Pandas 对该数据集进行分析可视化。希望通过这个例子,让你了解开放数据获取、整理、分析可视化。...这是返回搜索结果。 ? 结果不仅包含数据名称,还有数据类型。第一条是 csv 格式,最符合我们分析需求,因此我们点击第一项链接。 ?...注意最后多出来一列,确实已经变成了我们希望转换形式。 依然按照前面的方法,我们分组统计每一条街道上犯罪数量,并且进行排序。...我这里给你提供一个数据源,请你参考它,进行比例数值计算,修正上面的折线图。 下面,我们比较一下,不同月份之间,是否有明显抢劫犯罪发生数量差别。...小结 通过本文学习,希望你已掌握了以下内容: 如何检索、浏览获取开放数据如何Python Pandas数据分类统计; 如何Pandas 中做数据变换,以及缺失值补充; 如何Pandas

    1.8K20

    Python数据分析之利用pymysql操作数据

    Python数据分析之numpy数组全解析 Python数据分析之Pandas读写外部数据文件 Python数据分析之pandas基本数据结构 阅读目录 1 引言 2 创建库、表 2.1 创建数据库...execute方法一次插入一条记录,executemany一次插入多条记录: (1)execute:一次插入一条记录 cursor.execute('insert into book(bookname,...fetchone():取出第一条记录 cursor.execute('select * from book where bookid < %s;', [4]) books = cursor.fetchone...() print(books) 输出结果: (1, 'Python从入门到放弃', '马云', 2019) fetchone()相当于是fetchmany(1),取出第一条符合查询条件记录。...,流式游标会陆陆续续一条一条得返回查询数据,所以这类游标适用于内存低、网络带宽小、数据量大应用场景中。

    1.3K20

    利用Python数据处理进行公交车到站时间预测(一)

    根据运营状态、在线状态、gps是否有效,可删除无效数据。 利用上下行标志位,将简单清理后数据分成两部分,上行部分下行部分:  然后,根据不同公交汽车,把上下行数据按照不通公交车分类。...每个List分别对应上行或者下行公共汽车集合,List元素就是该公共汽车在数据采集周期内每个到达每个站点不同位置 3.获取间隔时间 假设我们现在有了单辆bus信息,那么计算相邻两站之间时间...提取符合这两条记录便可以计算所有车站之间行驶间隔了。最后我们把数据删除只剩下站点到站时间信息。 由于我们要获取是时间间隔,而我们现在只有到站时间。...利用python时间处理模块,将这一时间字符串转化为时间戳,然后利用list计算出各站点之间gap(时间差),然后保存为Series后插入到dataframe格式中。...最后,由于数据存在误差,gps传输数据也容易受到干扰,所以需要删除一些明显诡异值。

    1.5K40

    精通 Pandas 探索性分析:1~4 全

    如我们所见,在跳过最后两行之后,我们创建上一个数据与我们创建数据之间存在差异: df.tail(2) df = pd.read_csv('IMDB.csv', encoding = "ISO-8859...我们还研究了字符串方法在 Pandas使用,最后,我们学习了如何更改 Pandas 序列数据类型。 在下一章中,我们将学习处理,转换重塑数据技术。...最后,我们看到了一些使我们可以使用索引进行数据选择方法。 在下一节中,我们将学习如何重命名 Pandas 数据列。...将函数应用于 Pandas 序列或数据 在本节中,我们将学习如何Python 预构建函数自构建函数应用于 pandas 数据对象。...我们看到了如何处理 Pandas 中缺失值。 我们探索了 Pandas 数据索引,以及重命名删除 Pandas 数据列。 我们学习了如何处理转换日期时间数据

    28.2K10

    Python实现基于客观事实RFM模型(CDA持证人分享)

    本文将用现代最流行编程语言---Python语言来实践课堂上讲解RFM模型,将用户进行分类。 (tips:本文用到CDA Level 1中多维数据透视分析业务分析方法两块内容。)...下面讲述对R、F、M三个维度下度量如何进行汇总。 1.R代表最近一次消费,是计算最近一次消费时间点当前时间点时间差。...综上,我们大致了解了如何构建RFM模型,下面以Python实现RFM模型,并对每一步进行详细讲解。...具体代码如下: # 统计没条数据与当前日期时间差 ## 计算相差天数 data['R'] = (pd.datetime.now() - data['time']) ## 将时间差timedelta格式转化为需要日格式...04 总结 本文利用Python语言实现在CDA Level 1课程中学习到RFM模型,同时还利用了多维数据透视分析业务分析方法两个模块内容。所以说实践是检验巩固学到东西最好方法。

    2.1K00
    领券