字段的前后两个值计算其变化率"/>
【sql】对排序之后的数据根据某个字段的前后两个值计算其变化率
(1)通过创建两张表(也可以选择为创建TEMPORARY临时表)temp和temp2,同时在对两张表初始化数据的时候分别是设置序号rank(起始值0和1,且数据保证是按照字段S_INFO_WINDCODE值相同和字段TRADE_DT升序排列,这样的一个顺序rank顺序增加的)
(2)将两张表temp和temp2进行join操作,且条件是rank相等(其实是原表中刚好错位了的前后两条被放在同一条记录中了)和相同的t2(也即原有的S_INFO_WINDCODE字段值),则可以计算出来某个S_INFO_WINDCODE某两条相邻的(TRADE_DT)记录间的变化率
(3)将(2)中的计算结果以一个新的字段形式存储在原表AShareMarginTrade中
具体实现的详细SQL语句:
– 如果存在则删除临时表temp
DROP TABLE IF EXISTS temp
;
– 创建临时表temp,且对其排序之后增加序号
SELECT @rownum := 0;
CREATE TABLE IF NOT EXISTS
temp(t1 VARCHAR(8),t2 VARCHAR(20),t3 DECIMAL(20,4),rank INT,INDEX(rank))
SELECT mt.TRADE_DT t1,mt.S_INFO_WINDCODE t2,mt.S_MARGIN_PURCHWITHBORROWMONEY t3, @rownum := @rownum + 1 AS rank
FROM AShareMarginTrade mt
ORDER BY mt.S_INFO_WINDCODE,mt.TR
更多推荐
【sql】对排序之后的数据根据某个字段的前后两个值计算其变化率
发布评论