s証券コード
d日付
mマーケット
o,h,l,c 始値、高値、低値、終値
v 出来高
という形式で保存されている。
複合プライマリキーとして(s,d,m)を設定。
で、同じ証券コードの同じ日付に2つのマーケットがあると
エクセルなんかで処理するのが面倒になる。
例えば大阪証券取引所のデータなどが邪魔になる。
別にEXCELやPerlでやるのは難しくないのだが、
出来ればSELECT文で取り除きたいなあ。
要らない条件は、まあ、出来高のでかいヤツがあれば、
それでいいマーケットと考えてよかろー。
(1)同日の同証券コードの最大の出来高を取り出す。
select s,d,max(v) as v from tmp2 group by s,d;
単体だと上みたいなSQL
(2)同日の同証券コードの最大の出来高のマーケットは複数ある可能性がある。この場合、個人で株シミュレーション走らせるだけならどちらを選んでもいいだろうが、どちらかを選ばねばならない。
同日の同証券コードの最大の出来高のマーケットのうち最大のマーケットを選ぶ。
select a.s as s ,a.d as d,max(a.m) as m from tmp2 as a, (1) as b where a.v = b.v group by a.s, a.d
(3)同日の同証券コードの(2)で選んだマーケットの4本値をselectする。
select a.s, a.d, a.m, a.o, a.h, a.l, a.c, a.v from tmp2 as a, (2) as b where a.s = b.s and a.d=b.d and a.m=b.m;
select a.s, a.d, a.m, b.o, b.h, b.l, b.c, b.v from (select b.s as s ,b.d as d,max(b.m) as m from (select s,d,max(v) as v from tmp2 where s="1332" group by s,d ) as a, tmp2 as b where a.s = b.s and a.d=b.d and a.v = b.v group by s, d ) as a, tmp2 as b where a.s = b.s and a.d=b.d and a.m=b.m;
ぬー。 パワー過ぎ。。。。。。頭が。。。。。。。。。。。。
艦これヤルっす。
where s= "1332"のところを変えて使うみたいな。
こんなんでいいのかな…。
よくわかんないのだが、stock_code を変えるだけで実行できるように
ストアドプロシージャ登録しておいた。
便利だワイ
分割を修正するSQLも考えないとなあ。
0 件のコメント:
コメントを投稿