Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LeetCode面试SQL-获取最近第二次活动

LeetCode面试SQL-获取最近第二次活动

作者头像
数据仓库晨曦
发布于 2024-10-09 13:22:51
发布于 2024-10-09 13:22:51
12000
代码可运行
举报
文章被收录于专栏:数据仓库技术数据仓库技术
运行总次数:0
代码可运行

一、题目

表: t3_user_activity

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| username      | string  |
| activity      | string  |
| start_date    | string  |
| end_date      | string  |
+---------------+---------+

该表不包含主键 该表包含每个用户在一段时间内进行的活动的信息 名为 username 的用户在 startDate 到 endDate 日内有一次活动

写一条SQL查询展示每一位用户 最近第二次 的活动

如果用户仅有一次活动,返回该活动.

一个用户不能同时进行超过一项活动,以 任意 顺序返回结果

下面是查询结果格式的例子:

t3_user_activity 表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+-----------+-----------+-------------+-------------+
| username  | activity  | start_date  |  end_date   |
+-----------+-----------+-------------+-------------+
| Alice     | Travel    | 2020-02-12  | 2020-02-20  |
| Alice     | Dancing   | 2020-02-21  | 2020-02-23  |
| Alice     | Travel    | 2020-02-24  | 2020-02-28  |
| Bob       | Travel    | 2020-02-11  | 2020-02-18  |
+-----------+-----------+-------------+-------------+

Result:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+------------+--------------+-------------+-------------+
| username   | activity     | startDate   | endDate     |
+------------+--------------+-------------+-------------+
| Alice      | Dancing      | 2020-02-21  | 2020-02-23  |
| Bob        | Travel       | 2020-02-11  | 2020-02-18  |
+------------+--------------+-------------+-------------+

Alice 最近第二次的活动是从 2020-02-24 到 2020-02-28 的旅行, 在此之前的 2020-02-21 到 2020-02-23 她进行了舞蹈 Bob 只有一条记录,我们就取这条记录

二、分析

本题难点在于:需要根据数据内容,决定取出时第二次还是仅有的一次。

维度

评分

题目难度

⭐️⭐️⭐️

题目清晰度

⭐️⭐️⭐️⭐️⭐️

业务常见度

⭐️⭐️⭐️

三、SQL

1.计算参加活动的次序

使用row_numberh函数开窗,计算出按照时间倒叙的排名,由于活动不能同时进行,所以用startDate或者endDate都可以 执行SQL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select username,
       activity,
       start_date,
       end_date,
       row_number() over (partition by username order by start_date desc) as rn
from t3_user_activity;

SQL结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+-----------+-----------+-------------+-------------+-----+
| username  | activity  | start_date  |  end_date   | rn  |
+-----------+-----------+-------------+-------------+-----+
| Alice     | Travel    | 2020-02-24  | 2020-02-28  | 1   |
| Alice     | Dancing   | 2020-02-21  | 2020-02-23  | 2   |
| Alice     | Travel    | 2020-02-12  | 2020-02-20  | 3   |
| Bob       | Travel    | 2020-02-11  | 2020-02-18  | 1   |
+-----------+-----------+-------------+-------------+-----+

2.再次使用row_number开窗

先限制rn小于等于2,然后再次使用row_number进行开窗,根据用户分组,rn倒叙排列,得到rn1 执行SQL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select username,
       activity,
       start_date,
       end_date,
       rn,
       row_number() over (partition by username order by rn desc) as rn1
from (select username,
             activity,
             start_date,
             end_date,
             row_number() over (partition by username order by start_date desc) as rn
      from t3_user_activity) t
where rn <= 2

SQL结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+-----------+-----------+-------------+-------------+-----+------+
| username  | activity  | start_date  |  end_date   | rn  | rn1  |
+-----------+-----------+-------------+-------------+-----+------+
| Alice     | Dancing   | 2020-02-21  | 2020-02-23  | 2   | 1    |
| Alice     | Travel    | 2020-02-24  | 2020-02-28  | 1   | 2    |
| Bob       | Travel    | 2020-02-11  | 2020-02-18  | 1   | 1    |
+-----------+-----------+-------------+-------------+-----+------+

3.限制rn1,取出最终结果

查看上面结果,我们发现rn1=1的数据即为想要的数据结果,限制查询出结果。

执行SQL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select username,
       activity,
       start_date,
       end_date
from (select username,
             activity,
             start_date,
             end_date,
             rn,
             row_number() over (partition by username order by rn desc) as rn1
      from (select username,
                   activity,
                   start_date,
                   end_date,
                   row_number() over (partition by username order by start_date desc) as rn
            from t3_user_activity) t
      where rn <= 2) tt
where rn1 = 1 ;

SQL结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+-----------+-----------+-------------+-------------+
| username  | activity  | start_date  |  end_date   |
+-----------+-----------+-------------+-------------+
| Alice     | Dancing   | 2020-02-21  | 2020-02-23  |
| Bob       | Travel    | 2020-02-11  | 2020-02-18  |
+-----------+-----------+-------------+-------------+

四、建表语句和数据插入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--建表语句
CREATE TABLE t3_user_activity(
username string,
activity string,
start_date string,
end_date string
) COMMENT '用户活动表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
;
-- 插入数据
insert into t3_user_activity(username,activity,start_date,end_date)
values
('Alice','Travel','2020-02-12','2020-02-20'),
('Alice','Dancing','2020-02-21','2020-02-23'),
('Alice','Travel','2020-02-24','2020-02-28'),
('Bob','Travel','2020-02-11','2020-02-18');
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据仓库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
是否需要对因子进行『行业中性化』处理?
量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据等领域的主流自媒体。公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业30W+关注者,曾荣获AMMA优秀品牌力、优秀洞察力大奖,连续4年被腾讯云+社区评选为“年度最佳作者”。 来自:Financial Analysts Journal 标题:Is Sector Neutrality in Factor Investing a Mistake? 作者:Sina Ehsani、Campbell R. Harvey、Feifei Li
量化投资与机器学习微信公众号
2024/05/11
3820
是否需要对因子进行『行业中性化』处理?
单因子测试(中)——分层测试法
本文总结单因子测试的分层测试法。与回归法相比,分层测试法相对繁琐,但能展示更多细节。 分层测试法的思路是在统一的规则下, 利用单因子构建投资组合进行回测,然后对投资组合的表现进行全面评价,通过投资组合的表现说明因子的有效性。
量化小白
2019/01/22
9.4K0
101因子新测评,会有哪些新发现?
之前公众号分享过网友自行编写的WorldQuant 101因子源代码,大家有需要可以点击链接进行免费获取。
量化投资与机器学习微信公众号
2019/05/23
2.6K0
101因子新测评,会有哪些新发现?
单因子测试框架
SignalFactorAnalyse单因子测试框架哪些因子可以为组合提供超额收益?这是构建多因子模型的第一步,也是最关键一步。 特征选择非常关键,只有把握关键特征才能对数据达到重要性认识,选择好的因子,才能获取超额收益率。 对于传统交易经验、金融理论、微观市场、机器学习、深度学习等不断挖掘出来的巨量待验因子,一个快速且有效的因子测试框架,将是Multi-factor策略系统中最为关键的一环。 因子模型测试思路 因子有效性的判断与筛选: •备选因子确定: 数学意义、经济意义、统计意义 •预处理: 数据空缺与
企鹅号小编
2018/01/10
2.6K0
单因子测试框架
因子评估全流程详解
首先,这是一篇值得收藏的干货文。基本上覆盖到了因子评估的每个方面每个细节,小白友好型,很长,慢慢看。
量化小白
2023/04/03
5K1
因子评估全流程详解
单因子测试(下)——回归测试法
之前两篇分别总结了因子数据的预处理和单因子测试的分层测试法,本篇总结回归测试法,相较于分层测试法,回归测试法更简洁。
量化小白
2019/01/22
6.1K1
多因子尝试(一):因子加权方法在选股中的应用
之前在A股动量与反转的实证过程中,提到了因子择时和风格轮动的重要性,本篇算是对因子择时的一个小小的尝试,没有什么创新性,只是把现在比较传统的方法都拿来试了一遍,目前没有能力创造方法,只做方法的搬运工。
量化小白
2019/08/29
6.6K0
从零开始学量化(五):用Python做回归
回归作为数据分析中非常重要的一种方法,在量化中的应用也很多,从最简单的因子中性化到估计因子收益率,以及整个Barra框架,都是以回归为基础,本文总结各种回归方法以及python实现的代码。
量化小白
2019/07/10
8.2K0
动量因子30年
自从Jegadeesh和Titman(1993)验证了“买入过去收益较高的股票,卖出收益较低的股票“的交易策略能够带来显著的正收益,动量效应的提出至今已经有30多年。这种动量效应在各种资产类别和全球范围内都很强劲,这可能是对有效市场假说最直接的反驳。对投资者来说,动量是一种稳健、多变且有利可图的投资策略,这种策略已被共同基金、对冲基金和被动ETF广泛采用。对于金融研究来说,动量与Fama(1970)的弱形式有效市场假说存在显著矛盾。
量化投资与机器学习微信公众号
2023/04/20
1.4K0
动量因子30年
Barra系列(二):收益模型
不同国家的市场也是影响个股超额收益的因素之一,需要在收益模型中加入国家因子。为了让收益模型解唯一,约束市值加权的行业因子收益率之和为零。
量化小白
2020/02/25
2.4K0
因子的有效性分析基于7种机器学习算法【系列54】
今天,继续我们的机器学习应用量化投资系列。本期我们介绍一篇研究报告,详细的介绍了7中机器学习算法在因子有效性上的展现。希望给大家在写策略时做一些参考借鉴。 前言 逻辑依旧明了,机器学习并非黑箱 谈到机器学习,大家最忌讳的便是黑箱问题。其实不必,理解机器学习算法,逻辑实则简单,比如相同的因子特征将会有相同的表现。在实战中,我们发现, 该逻辑十分有效,在我们的机器学习选股模型中,该逻辑连续十几年不曾被打破。 Adaboost 最稳定,朴素贝叶斯收益最高 全市场选股,市值中性选股等权加权,行业中性选股等
量化投资与机器学习微信公众号
2018/03/20
2K0
因子的有效性分析基于7种机器学习算法【系列54】
【中国市场】2018第二季度因子表现,我都惊呆了!
Style Analytics是一家面向投资专业人士的独立全球软件提供商。Style Analytics之前被称为Style Research,拥有超过20年的因子分析经验,为30个国家的280多家投资机构提供服务。
量化投资与机器学习微信公众号
2018/10/25
6500
【中国市场】2018第二季度因子表现,我都惊呆了!
中国版四因子模型,加入情绪指标,6不6?
股票投资组合的收益率由何种因素决定?这个经典的问题,驱使着一代又一代的金融大师们,持续地对股票市场进行研究。最早的资本资产定价模型(CAPM模型)其实在1961年就有了雏形。
量化投资与机器学习微信公众号
2019/05/16
2.9K0
中国版四因子模型,加入情绪指标,6不6?
探寻量化Alpha:产业链提纯因子
量化策略中超额收益alpha的来源可以简单分为两部分(不考虑网下打新):pure alpha+风险风格收益。pure alpha,包括量价因子、基本面因子等,能够带来稳定的超额收益;风险风格收益由风险因子贡献,包括市场因子、市值因子、行业因子、成长因子等,收益的波动性非常大。
量化投资与机器学习微信公众号
2023/09/05
6360
探寻量化Alpha:产业链提纯因子
拒绝误杀!更有效的因子测试方法
在测试因子时,一般会对因子进行排序,并使用传统资产定价模型(如Fama因子模型)对Top组与Bottom组的收益差进行回归分析,如果显著产生了Fama模型不可解释的收益,就说明这个因子有效。
量化投资与机器学习微信公众号
2023/12/20
5050
拒绝误杀!更有效的因子测试方法
Man Group最新:动态风险管理在股票投资组合中的应用
今天公众号为大家分享一篇Man Group最新的研究文章,干货满满!重点在第四节~
量化投资与机器学习微信公众号
2020/12/08
1.3K0
Man Group最新:动态风险管理在股票投资组合中的应用
基于 RNN、LSTM 的股票多因子预测模型
前言 在机器学习如何应用到量化投资的系列文章中,今天我们专门来介绍一篇来自国信证券的研究报告,来从券商角度分析这个问题。 对于最直接的问题:能否利用神经网络,要机器自己识别 K 线图,自己做出判断,本篇推文的内容无法给出肯定的答案,但也不能否定其可能性,回答它需要更为深入、更为复杂的神经网络。本篇推文的目的是利用深度神经网络中的 RNN 的一些基本结果,对多因子模型进行尝试,以检验深度神经网络在多因子、投资领域的适用性,使得投资者能够对神经网络有 更为实践的理解,并能够在投资领域有所运用。 RNN简介 R
量化投资与机器学习微信公众号
2018/01/29
8.7K0
基于 RNN、LSTM 的股票多因子预测模型
多因子模型之因子(信号)测试平台----因子值的处理(二)
        我们知道,一个因子值的处理大致分为三个步骤,去极值、标准化、中性化,上次我们对因子值进行了去极值和标准化,这一次,我们主要讲一讲中性化,也就是neut。
钱塘小甲子
2019/01/28
1.4K0
多模型融合权重如何训练_单因子模型
本篇文章有别于传统的多因子研究,我们并未将重点放在阿尔法因子的挖掘上,而是通过对股票组合的权重优化计算,找到了在市值中性、行业中性、风格因子中性约束下的最优投资组合,以及验证得到的组合权重是否满足了约束条件。
全栈程序员站长
2022/11/08
1.1K0
多模型融合权重如何训练_单因子模型
浅谈指数增强
在说指数增强之前,首先要说明什么是指数。指数在各个领域中都广为应用,是一种重要的参考指标,比如衡量经济发展水平的GDP指数、反映消费水平/通胀水平的CPI指数、反映股票市场价格水平的价格指数等等。都是将大量个体的指标通过某种规则进行合成,用来反映整体的情况。
量化小白
2019/05/13
1.7K0
浅谈指数增强
相关推荐
是否需要对因子进行『行业中性化』处理?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验