股票K线功能实现

YangeIT大约 14 分钟今日指数SpringBoot

股票K线功能实现

1. 股票成交量对⽐功能 🎯

股票成交量对⽐功能

功能描述:统计A股⼤盘T⽇和T-1⽇成交量对⽐功能(成交量为沪深两市成交量之和)

image
image

stock_market_index_info表结构相关字段:

image
image

代码操作

SQL分析

-- 思路:通过逻辑获取T⽇开盘时间和当前时间⽇期范围,ge: 2022-01-03 09:30:00 到 2022-01-03 14:40:00
-- 那么T-1⽇⽇期范围则为:2022-01-02 09:30:00 到 2022-01-0214:40:00
-- 我们可分别统计T⽇和T-1⽇国内A股⼤盘交易量,然后再讲数据组装即可
-- 1.统计T⽇交易量数据信息(T-1⽇SQL结构⼀致)

-- 自己写。。。。


-- SQL语句添加order by 保证查询的数据是按照⽇期排序

提示:使用mysql中的when case

参考答案点击这里查看(需要密码)open in new window👈part4_股票成交量对⽐功能sql分析.txt

2. 个股分时涨跌幅度统计功能 🎯

个股分时涨跌幅度统计功能

功能说明:统计当前时间下(精确到分钟),A股在各个涨跌区间股票的数量;

image
image

个股分时K线⾏情功能代码操作

  1. 定义web服务接⼝
/**
 * 查询当前时间下股票的涨跌幅度区间统计功能
 * 如果当前⽇期不在有效时间内,则以最近的⼀个股票交易时间作为
查询点
 * @return
 */
 @GetMapping("/stock/updown")
 public R<Map> getStockUpDown(){
  return stockService.stockUpDownScopeCount();
 }

问题思考

  • 前端查询的数据是⽆序展示的,涨幅区间应该从⼩到⼤顺序展示;
  • 当前涨幅区间下如果没有对应的股票,则区间标题不会被展示,我们需要对⽆数据的区间默认为0给前端显示;
  • 最终效果:image

请问阁下怎么解决? 👈

3. 股票K线图功能

1.个股分时图行情功能 🎯

个股分时线⾏情

image
image

个股分时K线⾏情功能代码操作

-- 分析:查询个股分时K线图,说⽩了就是查询指定股票在当前交易⽇产⽣的流⽔数据报表展示
-- 综合条件:1.股票ID 2.股票开盘时间 3.当前时间点

-- 自己写

sql执行效果:👇 image

参考答案点击这里查看(需要密码)open in new window👈part4_个股分时图行情功能sql分析.txt

2. 股票K线图功能🎯

股票K线图功能

⽇K线
⽇K线
  1. ⽇K线就是将股票交易流⽔按天分组,然后统计出每天的交易数据,内容包含:⽇期、股票编码、名称、最⾼价、最低价、开盘价、收盘价、前收盘价、交易量;

  2. 需要注意的是这⾥的收盘价就是指每天最⼤交易时间点下对应的价格

个股分时K线⾏情功能代码操作

核⼼思路

  • SQL查询要划定⼀个默认的⽇期范围,这样可避免⼤数据量下全表查询⽽导致慢查询的问题;

  • 在指定的⽇期范围内以分组统计出每天⽇期的最⼤值(收盘时间);

  • 根据获取的最⼤⽇期组,使⽤in进⾏条件查询,进⽽获取⽇K线相关的数据;

  • 总之,股票每天最后⼀条数据就包含了当天最⾼价最低价等相关信息了。

-- 说明:因为在股票流⽔中,开盘价、最⾼价、最低价、当前价等信息在每条记录中都会记录,所以我们更加关注的是每天的收盘价格,业务要求如果当前没有收盘,则以最新价格作为收盘价,所以该业务就可以转化成查询每天最⼤交易时间对应的信息;

-- 步骤1:查询指定股票在指定⽇期范围内每天的最⼤时间,说⽩了就是以天分组,求每天最⼤时间
select
 max( sri.cur_time ) as closeDate
from
 stock_rt_info as sri
where
 sri.stock_code ='600021'
 and sri.cur_time between '2021-12-22 09:30:00' and '2022-01-06 14:25:00'
group by
date_format( sri.cur_time, '%Y%m%d' )


-- 步骤2:以步骤1查询结果作为条件,同统计指定时间点下,股票的数据信息

自己写............
















 
 
 

SQL执行效果: 👇 SQL执行效果

参考答案点击这里查看(需要密码)open in new window👈part4_个股分时K线⾏情功能sql分析.txt

面试点:

  1. 你在项目中有没有遇到SQL性能问题,如何解决的?

以股票分时数据业务为例说明 1. 前期数据量少,看不出效果 2. 随着时间积累,数据量越来越大,则索引的优势显现; TYPE:ALL 全表扫描--->在大量数据查询时,如果看到ALL要小心 导致索引失效的原因:函数在条件中处理导致索引失效

  1. SQL如何实现行转列?
  2. xml存在大量特殊字符,如何处理?
    • case when cdata