腾讯SQL面试题解析:如何找出连续5天涨幅超过5%的股票
作者:某七年数据开发工程师 | 2025年02月23日
关键词:SQL窗口函数、连续问题、股票分析、腾讯面试题
一、问题背景与难点拆解
在股票量化分析场景中,"连续N天满足条件"是高频面试题类型。本题要求在单表stock_data
中,筛选出连续5天以上(含)每日涨幅≥5%的股票,并输出连续天数及起止日期。其核心难点在于:
- 涨幅计算:需通过时间窗口函数获取前一日收盘价
- 连续性判断:如何将离散的日期序列转化为连续区间
- 性能优化:大数据量下避免全表扫描(如十亿级交易记录)
💡 趣味比喻:这就像在股票市场的马拉松中,找到那些连续5天都在"冲刺"的选手,而不仅仅是偶尔爆发。
二、解题思路与技术实现
1. 数据预处理:计算每日涨幅
sql">WITH daily_return AS (
SELECT
stock_code,
trade_date,
closing_price,
-- 计算当日涨幅(前一日为基准)
ROUND(closing_price / LAG(closing_price) OVER (
PARTITION BY stock_code
ORDER BY trade_date
) - 1,4) AS return_rate
FROM stock_data
)
技术要点