You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建关联拆股股息表的SQL表,计算带条件的股票涨跌幅百分比列

股票日度涨跌幅(含拆股、股息调整)查询参考

核心整合逻辑

  • 以agg表为基础,通过左连接关联split、div两张表,关联条件为股票代码sname和交易日期date,无对应拆股/股息记录的日期,相关字段自动返回NULL,符合仅在事件发生日引入数据的要求
  • 计算涨跌幅前,可判断拆股、股息字段是否非空,仅在有对应记录时启用调整逻辑,不影响普通交易日的计算逻辑

参考SQL代码

create table daily 
as    
with agg_with_event as (
  -- 第一步:关联交易数据和拆股、股息事件数据
  select 
    a.date,
    a.sname,
    a.open,
    a.high,
    a.low,
    a.close,
    a.volume,
    s.pre as split_pre,
    s.post as split_post,
    d.dividend
  from agg a
  -- 左连接拆股表,仅匹配到拆股记录时才有值
  left join split s 
    on a.sname = s.sname 
    and a.date = s.date
  -- 左连接股息表,仅匹配到股息记录时才有值
  left join div d 
    on a.sname = d.sname 
    and a.date = d.date
),
prevclose as (
  -- 第二步:取每只股票前一交易日的收盘价
  select 
    *,
    lag(close) over (partition by sname order by date) pclose   
  from agg_with_event   
)
-- 第三步:计算调整后涨跌幅
select 
  *,
  -- 此处可根据业务需求自定义复权调整逻辑,仅当split_pre、dividend非空时触发对应调整
  100.0*(close - 
    /* 调整前收盘价的逻辑示例:
    case 
      when split_pre is not null then pclose * split_post / split_pre
      when dividend is not null then pclose - dividend
      else pclose 
    end
    */
    pclose
  )/(case when pclose=0 then null else pclose end) as prcnt  
from prevclose a  
where pclose != 0;

注意:原代码中分区字段误写为symbol,需和agg表的实际字段sname保持一致,否则会出现分区逻辑错误。

内容的提问来源于stack exchange,提问作者afunnyworld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:45:03