股票 SQL

insert into stock.dm_stock_trade_total_result

select

'20230928'

,ts_code

,max(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) = to_date('2023-09-28') then close end)

,min(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',365)) then cast(close as float) end)

,max(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',365)) then cast(close as float) end)

,min(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',183)) then cast(close as float) end)

,max(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',183)) then cast(close as float) end)

,min(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',31)) then cast(close as float) end)

,max(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',31)) then cast(close as float) end)

,min(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',7)) then cast(close as float) end)

,max(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',7)) then cast(close as float) end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',365)) then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',365)) and status = '1' then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',365)) and status = '0' then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',183)) then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',183)) and status = '1' then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',183)) and status = '0' then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',31)) then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',31)) and status = '1' then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',31)) and status = '0' then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',7)) then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',7)) and status = '1' then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',7)) and status = '0' then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',14)) then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',14)) and status = '1' then 1 end)

,sum(case when to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) <= to_date('2023-09-28') and to_date(concat(substr(trade_date,1,4),'-',substr(trade_date,5,2),'-',substr(trade_date,7,2))) >= to_date(date_sub('2023-09-28',14)) and status = '0' then 1 end)

,'20230928'

from stock.dm_stock_trade_d

group by ts_code

select * from stock.dm_stock_trade_total_result

--------------------------------两年

select

ts_code

,max(case when substr(trade_date,1,6) = '202201' then up end) 202201_up

,max(case when substr(trade_date,1,6) = '202202' then up end) 202202_up

,max(case when substr(trade_date,1,6) = '202203' then up end) 202203_up

,max(case when substr(trade_date,1,6) = '202204' then up end) 202204_up

,max(case when substr(trade_date,1,6) = '202205' then up end) 202205_up

,max(case when substr(trade_date,1,6) = '202206' then up end) 202206_up

,max(case when substr(trade_date,1,6) = '202207' then up end) 202207_up

,max(case when substr(trade_date,1,6) = '202208' then up end) 202208_up

,max(case when substr(trade_date,1,6) = '202209' then up end) 202209_up

,max(case when substr(trade_date,1,6) = '202210' then up end) 202210_up

,max(case when substr(trade_date,1,6) = '202211' then up end) 202211_up

,max(case when substr(trade_date,1,6) = '202212' then up end) 202212_up

,max(case when substr(trade_date,1,6) = '202301' then up end) 202301_up

,max(case when substr(trade_date,1,6) = '202302' then up end) 202302_up

,max(case when substr(trade_date,1,6) = '202303' then up end) 202303_up

,max(case when substr(trade_date,1,6) = '202304' then up end) 202304_up

,max(case when substr(trade_date,1,6) = '202305' then up end) 202305_up

,max(case when substr(trade_date,1,6) = '202306' then up end) 202306_up

,max(case when substr(trade_date,1,6) = '202307' then up end) 202307_up

,max(case when substr(trade_date,1,6) = '202308' then up end) 202308_up

,max(case when substr(trade_date,1,6) = '202309' then up end) 202309_up

from (

select

substr(trade_date,1,6) trade_date

,ts_code

,sum(case when status = 0 then 1 end) down

,sum(case when status = 1 then 1 end) up

from stock.dm_stock_trade_d where ts_code='300730.SZ'

group by substr(trade_date,1,6),ts_code

) t

group by ts_code


select

ts_code

,max(case when substr(trade_date,1,6) = '202301' then down end) 202301_down

,max(case when substr(trade_date,1,6) = '202301' then up end) 202301_up

,max(case when substr(trade_date,1,6) = '202302' then down end) 202302_down

,max(case when substr(trade_date,1,6) = '202302' then up end) 202302_up

,max(case when substr(trade_date,1,6) = '202303' then down end) 202303_down

,max(case when substr(trade_date,1,6) = '202303' then up end) 202303_up

,max(case when substr(trade_date,1,6) = '202304' then down end) 202304_down

,max(case when substr(trade_date,1,6) = '202304' then up end) 202304_up

,max(case when substr(trade_date,1,6) = '202305' then down end) 202305_down

,max(case when substr(trade_date,1,6) = '202305' then up end) 202305_up

,max(case when substr(trade_date,1,6) = '202306' then down end) 202306_down

,max(case when substr(trade_date,1,6) = '202306' then up end) 202306_up

,max(case when substr(trade_date,1,6) = '202307' then down end) 202307_down

,max(case when substr(trade_date,1,6) = '202307' then up end) 202307_up

,max(case when substr(trade_date,1,6) = '202308' then down end) 202308_down

,max(case when substr(trade_date,1,6) = '202308' then up end) 202308_up

from (

select

substr(trade_date,1,6) trade_date

,ts_code

,sum(case when status = 0 then 1 end) down

,sum(case when status = 1 then 1 end) up

from stock.dm_stock_trade_d where trade_date >= '20230101' and trade_date <= '20231231' --and ts_code='603008.SH'

group by substr(trade_date,1,6),ts_code

) t

group by ts_code

select

ts_code

,sum(case when status = 0 then 1 end) down

,sum(case when status = 1 then 1 end) up

from stock.dm_stock_trade_d where trade_date >= '20230101' and trade_date <= '20231231'

group by ts_code

相关推荐
邪修king10 分钟前
Re:Linux系统篇(十九):进程篇(八): 进程等待详解:wait/waitpid,僵尸进程到底该如何回收
java·开发语言
LiaCode13 分钟前
别让 AI 把仓库写成“代码平行宇宙”:从 Deslop 看生成前查重
前端·后端·github
啵啵啵鱼22 分钟前
DS-顺序表
java·数据结构·笔记·后端·链表·obsidian
nice先生的狂想曲24 分钟前
javascript高级程序设计(六)——2026.9.5
前端·javascript
光影少年34 分钟前
如何做大型React+RN 项目架构设计、目录规范
前端·react native·react.js
TinyMemory34 分钟前
Java 面向对象核心入门(七):方法重载 Overload,同一个方法名能干不一样的活
java·面向对象·overload·方法重载
一位正在转型AI全栈的前端工程师39 分钟前
AI 全栈学习之旅 -Week 8:从单 Agent 到多 Agent 协作:LangGraph 实战与记忆持久化
前端·python
用户9210802628640 分钟前
Promise 和 async/await:从用途到执行机制
前端
yyt3630458411 小时前
KLineChartQuant:GLSL 的精度问题及 RTC 解法
前端·vue.js·react.js·交互·图形渲染·webgl·数据可视化