当前位置: 首页 > news >正文

SQL面试题练习 —— 波峰波谷

来源:字节今日头条

目录

  • 1 题目
  • 2 建表语句
  • 3 题解

1 题目


有如下数据,记录每天每只股票的收盘价格,请查出每只股票的波峰和波谷的日期和价格;

在这里插入图片描述

波峰定义:股票价格高于前一天和后一天价格时为波峰
波谷定义:股票价格低于前一天和后一天价格是为波谷

2 建表语句


CREATE TABLE t_stock_test (ts_code VARCHAR(20) COMMENT '股票代码',trade_date VARCHAR(20) COMMENT '交易日期',close FLOAT COMMENT '收盘价'
);
INSERT INTO `t_stock_test` VALUES 
('000001.SZ','20220104',16.66),
('000002.SZ','20220104',20.49),
('000001.SZ','20220105',17.15),
('000002.SZ','20220105',21.17),
('000001.SZ','20220106',17.12),
('000002.SZ','20220106',21.05),
('000001.SZ','20220107',17.2),
('000002.SZ','20220107',21.89),
('000001.SZ','20220110',17.19),
('000002.SZ','20220110',22.16),
('000001.SZ','20220111',17.41),
('000002.SZ','20220111',22.3),
('000001.SZ','20220112',17),
('000002.SZ','20220112',22.05),
('000001.SZ','20220113',16.98),
('000002.SZ','20220113',21.53),
('000001.SZ','20220114',16.33),
('000002.SZ','20220114',20.7),
('000001.SZ','20220117',16.22),
('000002.SZ','20220117',20.87);

样例结果

在这里插入图片描述

3 题解


需要比较当天价格与前一天、后一天的价格进行比较,常规想法为进行关联,股票ID相等、日期为当天日期减1,为前一天价格,日期为当天价格加1,为后一天价格,然后进行计算;简化方法为使用 lag 和 lead 函数,可以避免进行表关联;

  • lag()函数
    • LAG(col,n,DEFAULT) 用于统计窗口内往上第 n 行。参数1为列名,参数2为往上第 n 行(可选,默认为1),参数3为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)
  • lead()函数
    • LEAD(col,n,DEFAULT) 用于统计窗口内往下第 n 行。参数1为列名,参数2为往下第 n 行(可选,默认为1),参数3为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)
select ts_code,trade_date,case when close> last_close and close>next_close then '波峰' else '波谷' end as type
from 
(select*,lag(close,1)over(partition by ts_code order by trade_date) last_close,lead(close,1)over(partition by ts_code order by trade_date) next_close 
from t_stock_test)t
where (close> last_close and close>next_close) 
or (close< last_close and close<next_close);
http://www.lryc.cn/news/356486.html

相关文章:

  • 检索模型预训练方法:RetroMAE
  • OpenHarmony实战开发——宿舍全屋智能开发指南
  • 等了10年,终于迎来RTX5/RTX4全家桶开源,开源,开源! 且免费商用
  • Python 读取.shp文件并生成图幅编号
  • 【算法】位运算算法——判断字符是否唯一
  • AAAI2024 基于扩散模型 多类别 工业异常检测 DiAD
  • JavaEE-Spring Controller(服务器控制以及Controller的实现和配置)
  • 页面导出PDF,非可视区域如何解决
  • Android UI:ViewTree: 监听
  • 【光伏干货】光伏无人机巡检步骤
  • 『大模型笔记』从头开始代码构建GPT!
  • idea的project structure下project [lauguage ]()level 没有java的sdk17选项如何导入
  • JavaScript数据类型与转换
  • 三十、openlayers官网示例解析Double click, Drag and Zoom——第二次点击鼠标拖拽缩放地图效果、取消地图双击放大事件
  • 前端基础入门三大核心之网络安全篇:TLS/SSL的魔法之旅
  • Flutter 中的 SnackBarAction 小部件:全面指南
  • Point-Nerf 理论笔记和理解
  • 深度学习中的梯度消失和梯度爆炸问题
  • Flink 通过 paimon 关联维表,内存降为原来的1/4
  • Python知识详解【1】~{正则表达式}
  • 装饰模式:鸡腿堡
  • 视图【mysql数据库】
  • opencv的findContours()函数
  • 多电压档hold扫尾
  • ABAP Json解析案例
  • QT学习(20):QStyle和自定义样式
  • 香橙派 AIpro 昇腾 Ascend C++ 分类模型适配
  • 2024吉林省电赛(达盛杯)
  • 【算法题】520 钻石争霸赛 2024 全解析
  • Yii 结合MPDF 给PDF文件添加多行水印