1、个股分时涨跌幅度统计功能分析
1.1 个股涨跌幅度功能原型
功能说明:统计当前时间下(精确到分钟),A股在各个涨跌区间股票的数量;
股票涨跌幅区间定义: "<-7%" 、 "-7~-5%"、 "-5~-3%" 、 "-3~0%" 、"0~3%" 、 "3~5%" 、 "5~7%" 、 ">7%"
1.2 个股分时涨跌幅度统计功能接口说明
功能描述:统计当前时间下(精确到分钟),A股在各个涨跌区间股票的数量; 服务路径:/api/quot/stock/updown 服务方法:GET 前端请求频率:每分钟 请求参数:无
注意事项:如果当前不在股票有效时间内,则以最近最新的一个有效股票交易日作为查询时间点展示;
响应数据格式:
{
"code": 1,
"data": {
"time": "2021-12-31 14:58:00",
"infos": [
{
"count": 17,
"title": "-3~0%"
},
{
"count": 2,
"title": "-5~-3%"
},
//省略......
]
}
}
1.3 个股涨跌幅度区间统计功能SQL分析
2、涨跌幅度统计SQL实现
-- 整体思路:先统计当前时间点下每支股票的涨幅和时间集合,然后再将结果子查询将涨幅值转换成涨幅区间名称,
-- 最后再根据涨幅区间分组统计每一组对应的数量即可
-- 步骤1:统计当前时间下,每只股票的涨幅值
select
( sri.cur_price - sri.pre_close_price )/ sri.pre_close_price as rate
from
stock_rt_info as sri
where
sri.cur_time = '2022-01-06 09:55:00'
-- 步骤2:将步骤1的查询结果中数据转换为区间范围集合
select
CASE
WHEN tmp.rate > 0.07 THEN '>7%'
WHEN tmp.rate > 0.05 AND tmp.rate <= 0.07 THEN '5~7%'
WHEN tmp.rate > 0.03 AND tmp.rate <= 0.05 THEN '3~5%'
WHEN tmp.rate > 0 AND tmp.rate <= 0.03 THEN '0~3%'
WHEN tmp.rate > -0.03 AND tmp.rate <= 0 THEN '-3~0%'
WHEN tmp.rate > -0.05 AND tmp.rate <= -0.03 THEN '-5~-3%'
WHEN tmp.rate > -0.07 AND tmp.rate <= -0.05 THEN '-7~-5%'
ELSE '<-7%'
END 'title'
from
(
select
(sri.cur_price-sri.pre_close_price)/sri.pre_close_price as rate
from stock_rt_info as sri
where sri.cur_time='2022-01-06 09:55:00'
)as tmp
-- 根据区间分组,统计各个区间数据量
select
tmp2.