- - PR -
SQLで取得できますか?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-04-19 10:08
こんにちは、みなさん。
5分間隔の株価のテーブルがあります。これを日にち単位にして取得したいのですが、SQLだけで取得する方法が思いつきません。 株価TBL 日付 時刻 始値 高値 安値 終値 出来高 20050401 0900 1200 1230 1190 1210 56 20050401 0905 1210 1240 1150 1190 70 20050401 0910 1190 1230 1190 1210 55 20050401 0915 1210 1250 1170 1230 45 20050402 0900 1130 1150 1100 1140 30 20050402 0905 1140 1140 1100 1110 25 20050402 0910 1110 1110 1060 1060 55 20050402 0915 1060 1080 1060 1060 80 このデータから以下のように出力したいのです。 日付 始値 高値 安値 終値 出来高 20050401 1200 1250 1150 1230 226 20050402 1130 1160 1110 1060 190 始値はその日付の始値列の一番小さい時刻の値 高値はその日付の高値列の一番高い値 安値はその日付の安値列の一番低い値 終値はその日付の終値列の一番大きい時刻の値 出来高は日付単位の合計値 select 日付,max(高値),min(安値),sum(出来高) from 株価TBL group by 日付 で日付、高値、安値、出来高は取得できるのですが、始値と終値の取得方法が分かりません。 ご教授のほどお願いします。 | ||||
|
投稿日時: 2005-04-19 10:30
お早うございます。
SQLで困っています http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19846&forum=26 で、質問に回答したと思いますが、最後に
と書かれていますが、その後自分で勉強はされたんですか? 今回の質問の内容はざっくりとしか読んでいませんが、 勉強して、試行錯誤すればそれなりに自分で解決できる内容では無いのでしょうか? ※当然SQLだけでは無く、使っているDBの関数とかも勉強は必要ですよ SQLを質問される方へのアドバイス http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=18502&forum=26 で私が書いていますが、自分の席にDBをインストールして 簡単にテーブルを作って、それに対してSQLを発行してみれば わかる話では無いのですか? _________________ Inspired Ambitious [ メッセージ編集済み 編集者: NAO 編集日時 2005-04-19 10:31 ] | ||||
|
投稿日時: 2005-04-19 10:58
NAOさん返答ありがとうございます。
その後、当サイトの相関サブクエリーを読んでみましたが、今回のクエリーが相関サブクエリーで作る方法が思いつきませんでしたので、投稿させてもらいました。 | ||||
|
投稿日時: 2005-04-19 11:04
ちょっくら整理してみましょうか?
これで高値、安値、出来高は日付単位でグループ化して、集計関数使えばいいって 解ったんですよね? ではまず始値のみを求めるSQL文ってどう書けばいいか お解りになりますか? (ある列(時刻)の最小値を持つレコードを取得するって事です。) #一応の確認ですが… #始値、終値は日付ごとで一番小さい/大きい値の時刻を持つ #レコードの始値、終値のことですよね? #「始値はその日付の始値列の一番小さい時刻の値」 #がよく理解できなかったので。 #日本語修正(滝汗 [ メッセージ編集済み 編集者: 夏椰 編集日時 2005-04-19 11:35 ] | ||||
|
投稿日時: 2005-04-19 11:41
こんにちは、夏椰さん
レスありがとうございます。 始値と終値の求め方が良く分かりません。 その日毎の時刻の一番小さい値の始値を取得したいのである日にちだけを限定してしまえば以下のようにすれば取れるでしょうか(自分で書いていて恥ずかしいですが・・・) select top 1 始値 from 株価TBL where 日付 = '20050401' order by 時刻 | ||||
|
投稿日時: 2005-04-19 11:44
そうですか。 ここで前回の書き込みで教わった相関サブクエリーを使えばいいんですよ。(^^) ↓ちゃんと試していないけど、こんな感じになると思います。 ------------------------------------------------------------ SELECT 日付, 始値 FROM 株価TBL A WHERE 時刻 = ( SELECT MIN(時刻) FROM 株価TBL B WHERE B.日付 = A.日付 ) ------------------------------------------------------------ で、始値の求め方がわかったら、終値に変更してみて、 それらを1つのSQLとして合体させてみましょう。(^^) [ メッセージ編集済み 編集者: 夏椰 編集日時 2005-04-19 11:46 ] | ||||
|
投稿日時: 2005-04-19 11:57
@ITに相関サブクエリーが載っているかどうかではありません。 そういった事も含めてSQLをきちんと勉強して下さいって事です。 | ||||
|
投稿日時: 2005-04-19 13:13
Googleの検索結果
該当する@ITの相関サブクエリーのページ これで引っかかって、 相関クエリーをはなんぞやって理解できると思いますが・・・? 本当に調べました・・・? 調べ方がわからなければ 「調べ方がわかりません」 と聞くのが順当かと思いますが・・・?? 尚、@ITのページは、Googleの検索結果第一番でした。 |