質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

2302閲覧

【MySQL】サブクエリのSELECT文の作り方

tajix_japan

総合スコア132

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

1グッド

1クリップ

投稿2016/10/30 03:38

株価の特定期間の平均値を求めようとしています。

stockdata_all
連番と株価コード 株価 日にち が入っているテーブルです。

aa1,code, owarine, date
1000 5101-T 1800 2016-10-25
999 5108-T 3800 2016-10-25
998 5101-T 1830 2016-10-24
997 5108-T 3850 2016-10-24
996 5101-T 1838 2016-10-23
995 5108-T 3836 2016-10-23
: : : :
: : : :
: : : :

下記で5101-Tの株価の25日平均を取得できます。

SELECT (SELECT SUM(AA25.owarine)/25 FROM
(SELECT aa1,code,owarine,date FROM stockdata_all WHERE code='5101-T' order by aa1 DESC LIMIT 0,25) as AA25) as 25ave

表示は

25ave
1682

のような形で、コード表示はありません。

【やりたいこと】

code 25ave
5101-T 1682
5108-T 3150

のようにコードごとに25日平均の株価を表示させたいです。

SELECT stockdata_all.code,AC25.code,AC25.AB25
FROM stockdata_all ,
(SELECT code,(SELECT SUM(AA25.owarine)/25 FROM
(SELECT aa1,code,owarine,date FROM stockdata_all order by aa1 DESC LIMIT 0,25) as AA25) AS AB25 FROM stockdata_all order by aa1 DESC LIMIT 0,25)AS AC25 WHERE stockdata_all.code=AC25.code

としたのですが、株価は特定の価格がすべて表示され、個別表示になりません。
どのようにすればいいかご教示戴けましたら幸いです。

よろしくお願いいたします。

fermat👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ちょっと難しく考えすぎな気がします。

SQLにはGROUP BY句という集計に特化した構文があるので、
それを利用した方が簡単に書けます。
(GROUP BYの詳しい説明はこちらをどうぞ)

以下SQLの一例です。

SQL

1SELECT 2 s.code 3, AVG(s.owarine) AS "集計期間内の平均終値" 4FROM 5 stockdata_all s 6WHERE 7 -- 例えばDATE('2016-10-01')を開始日、DATE('2016-10-25')終了日とすると、 8 -- その期間のデータが集計対象に絞れます 9 s.date BETWEEN 集計開始日の値 AND 集計終了日の値 10GROUP BY 11 -- ここで何単位で束ねて集約するか指定します 12 s.code

投稿2016/10/30 03:51

編集2016/10/30 04:08
Panzer_vor

総合スコア1636

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tajix_japan

2016/10/30 05:07

有難うございます。 GROUP BYでやってみます。 助かりました。 深く御礼申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問