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.mzph.cn/pingmian/15344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在linux下的ROS中下载超级终端Terminator ROS开发得力助手

在一般我们运行机器人包时要打开三个终端来运行&#xff0c;关闭时还要一个一个关闭&#xff08;ctrlc&#xff09;过于麻烦 现在下载用了terminator后&#xff0c;就支持一键关闭多个终端了&#xff0c;很方便&#xff0c;具体操作如下&#xff1a; sudo apt install termin…

JDBCTemplate介绍

Spring JDBC Spring框架对Spring的简单封装。提供一个JDBCTemplate对象简化JDBC开发 *步骤&#xff1a; 1、导入jar包 2、创建JDBCTemplate对象。依赖于数据源DataSource *JdbcTemplate templatenew JdbcTemplate(ds); 3、调用JdbcTemplate的方法来完成CRUD的操作 *update()&…

程序员,绝不认输!

程序员&#xff0c;绝不认输&#xff0c;这是一份对技术的执着&#xff0c;也是对挑战的无畏。在代码的世界里&#xff0c;每一个程序员都是一个探险家&#xff0c;他们面对的是无尽的未知和可能。 当遇到难题时&#xff0c;他们不会退缩&#xff0c;而是会深入研究&#xff0…

JavaScript中null的类型

在JavaScript中&#xff0c;null 并不是一个对象类型。实际上&#xff0c;null 是一个特殊的值&#xff0c;表示“无”或“空引用”。然而&#xff0c;由于历史原因和某些JavaScript实现中的细节&#xff0c;关于null的类型可能会产生一些混淆。 当你使用 typeof 操作符来检查…

中国企业出海,哪些业务需要负载均衡?

国内企业出海的进程正在加速。中国的出海企业剑指跨境电商、社交、游戏、短剧等市场&#xff0c;其中尤其以跨境电商的数据最为突出。据官方数据&#xff0c;2023年我国跨境电商进出口总额达到2.38万亿元&#xff0c;比2016年增长近50倍&#xff0c;占货物贸易总规模的5.7%。 …

2024-5-9-从0到1手写配置中心Config之@ConfigurationProperties热更新

在PropertySourcesProcessor中&#xff0c;需要通过http从config-server获取配置。 使用ConfigMeta包装服务信息 在MidnightConfigService接口中添加默认实现类 继承MidnightRepositoryChangeListener接口&#xff1b;获取默认的MidnightRepository&#xff1b;创建MidnightCo…

vue3 组件间通信

父组件-->子组件 传递数据 父组件通过绑定的属性 :customProperty 传给子组件&#xff0c;子组件通过 defineProps 接收数据 <!-- 父组件&#xff08;ParentComponent.vue&#xff09; --><template><div><ChildComponent :message"parentMess…

开发“校园帮”小程序:从构思到上线的完整指南

目录 开发“校园帮”小程序&#xff1a;从构思到上线的完整指南1. 需求分析和规划确定目标用户功能需求竞争分析技术可行性 2. 项目计划时间规划团队分工预算 3. 原型设计线框图用户流程图UI设计 4. 技术选型开发工具技术栈 5. 开发设置开发环境前端开发后端开发接口联调 6. 测…

xcode配置快速打开终端命令行工具教程

以往我们使用idea编辑器或者vscode编辑器的时候&#xff0c;我们可以快速的在编辑器下面打开终端进行相关的操作&#xff0c;但是在xcode里面却没有这么方便的功能按钮&#xff0c;真的不是很习惯&#xff0c;所以这次就来给xcode配置这么一个方便的功能。 idea的Terminal 这…

chris csp练习

n个球放入m个盒子中&#xff0c;有多少种放法 #include <iostream> #include <algorithm> using namespace std;int n, m, ans 2e8, dxy[4][2] { {0, 1}, {1, 0}, {0, -1}, {-1, 0} }; char c[110][110]; bool a[110][110]; int h 1, t 0, q1[11000], q2[1100…

qt 操作相机笔记

目录 查看相机个数 查看相机个数 配置文件&#xff1a; QT multimedia #include <QCameraInfo> #include <QDebug>void listCameras() {QList<QCameraInfo> cameras QCameraInfo::availableCameras();foreach (const QCameraInfo &cameraInfo, cam…

2024年蓝桥杯Web开发【大赛大纲】15届

一、 组别 Web应用开发分为&#xff1a;大学组和职业院校组。 每位选手只能申请参加其中一个组别的竞赛。各个组别单独评奖。 研究生和本科生只能报大学组。 其它高职高专院校可自行选择报任意组别。 二. 竞赛赛程 省赛时长&#xff1a;4小时。 决赛时长&#xff1a;4小…

H3CNE-5-IP子网划分(二)

可用主机地址个数&#xff1a; 2^n-2 &#xff08;n为主机位&#xff09; 主机位全0 子网地址 192.168.1.0 255.255.255.0 192.168.1.128 255.255.255.128 172.16.2.192 255.255.255.224 主机位全1 广播地址 192.168.1.255 255.255.255.0 192.168.1.127 255.255.255.1…

豆瓣电影后端设计

sql脚本 -- douban.tags_encode definitionCREATE TABLE tags_encode (id bigint NOT NULL AUTO_INCREMENT COMMENT 自增主键,tag varchar(100) NOT NULL COMMENT tag中文名,tag_encode varchar(100) NOT NULL COMMENT tag转encode,type varchar(100) NOT NULL DEFAULT movie …

SpringCloud微服务04-Elasticsearch-DSL查询-聚合

一、Elasticsearch 搜索引擎&#xff0c;响应速度非常快&#xff0c;特别是对大数据量的情况 1.初始elasticsearch 如果只需要商品搜索&#xff0c;百度这种搜索网站&#xff0c;只需要第二个就够了 docker部署&#xff1a;day08-Elasticsearch - 飞书云文档 (feishu.cn) e…

【Andoird开发】android获取蓝牙权限,搜索蓝牙设备MAC

<!-- Android 12以下才需要定位权限&#xff0c; Android 9以下官方建议申请ACCESS_COARSE_LOCATION --><uses-permission android:name"android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name"android.permission.ACCES…

创建FreeRTOS工程

创建STM32CubeMX工程 配置时钟 配置FreeRTOS 生成Keil MDK的工程 打开工程 结尾 这就是我们用STM32CubeMX创建的最基本的一个FreeRTOS的工程。可以看到&#xff0c;这个与我们使用stm32开发的裸机程序有相同的地方&#xff0c;也有不同的地方&#xff0c;我们可以发现&am…

MySQL 8.4.0 LTS 变更解析:I_S 表、权限、关键字和客户端

↑ 关注“少安事务所”公众号&#xff0c;欢迎⭐收藏&#xff0c;不错过精彩内容~ MySQL 8.4.0 LTS 已经发布 &#xff0c;作为发版模型变更后的第一个长期支持版本&#xff0c;注定要承担未来生产环境的重任&#xff0c;那么这个版本都有哪些新特性、变更&#xff0c;接下来少…

Ubuntu系统上安装NVIDIA驱动【笔记】

Ubuntu上安装NVIDIA驱动&#xff0c;您可以按照以下步骤操作&#xff1a; 首先&#xff0c;您需要配置软件源&#xff08;根据情况配置&#xff0c;否则影响更新和下载速度&#xff09;。 接下来&#xff0c;您可以按照上一条回答中的步骤来安装新的NVIDIA驱动。首先&#xff…

YOLOv5模型的快速推理方法

一 概述 ultralytics 开发的目标检测算法 YOLOv5 有着广泛的应用&#xff0c;在速度和精准度上做了良好的平衡&#xff0c;被很多商业化开发所采纳。本文档主要记录使用 pip 安装的方式快速的部署推理 YOLOv5 的模型文件, yolov5 的原始模型文件为 .pt . 本文档适用于 yolov5…