各位大大們好,
想麻煩請教一下如何得到每天每股半年內的最高價之最大值.
資料庫有三個欄位 日期, 證券代號, 最高價.
日期從 2016/1/1 到 2019/12/31.
證券代號是每個股票的代號.
最高價是每個股票那天的最高成交價.
我想用 Query 得出每天每股之前半年的最高價之最大值.
例子: 得出 Query 有三個欄位
2019/12/31, 0050, 最高價最大值 (從 2019/12/30~2019/7/1 0050 這支股票 哪一個價錢是最高價的最大值)
2019/12/30, 0050, 最高價最大值 (從 2019/12/29~2019/6/30 0050 這支股票 哪一個價錢是最高價的最大值)
2019/12/31, 0060, 最高價最大值 (從 2019/12/30~2019/7/1 0060 這支股票 哪一個價錢是最高價的最大值)
2019/12/30, 0060, 最高價最大值 (從 2019/12/29~2019/6/30 0060 這支股票 哪一個價錢是最高價的最大值)
日期也可以用 between 日期-1 AND 日期-135 來計算..
謝謝..
初版
select a.ddate, a.sid, b.high2
FROM
table a left join (
select ddate, sid, max(high) as high2
from table
where ddate between ddate - 1 and ddate - 135
group by ddate, sid
) b
on a.ddate = b.ddate and a.sid = b.sid
SELECT a.ddate, a.sid, MAX(b.high)
FROM
(SELECT ddate, ddate - 135 AS LB, sid FROM table) a
LEFT JOIN
(SELECT ddate, sid, high FROM table) b
ON b.ddate >= a.LB AND b.ddate < a.ddate AND a.sid = b.sid
GROUP BY a.ddate, a.sid
謝謝您的解答, 我用你的方法測試了一下, 發現 high2 跑出空白資料.
所以我把 b table 單獨拆出來做 Query 發現跑不出任何資料. 我附上我的 SQL, 結果跟 table 資料. 麻煩您再幫忙看一下. 謝謝.
table 資料我拿兩個證券代碼當例子.
https://www.dropbox.com/s/ayifj3uczj1cjmk/%E5%8D%8A%E5%B9%B4%E6%9C%80%E5%A4%A7%E5%80%BC.xlsx?dl=0
我已修改答案,請再試看看。
不考慮效能的話
select 日期, 證券代號,(
select max(最高價) from 資料表 t1 where 日期 between 日期-1 AND 日期-135 AND t1.證券代號 = 證券代號
) '最高價'
from 資料表