MySQL5で、SUMした値を新たにカラムとして追加したビューを作成したいのですが、どういうSQLを書けばよいかわかりません。
今、Aというテーブルがあり、f1,f2,f3というカラムがあります。
このテーブルを元にvwAというビューを作成したいのですが、その際、f1でGroup Byしたf2のSUMをf2Keiというカラム名で追加し、最終的にf3とf2Keiという2つのカラムを持ったビューにしたいです。
create view vwA as select f3,select SUM(f2) as f2Kei from A GROUP BY f1 from A;
と書いてみましたがエラーを返されました。
どのようなSQLを書けばよいか、ご教授ください。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
やりたいことを、具体的に提示してください。
「どういった母体データから、どういう結果を得たい」といったことの説明なしに、他人には適切なアドバイスはできません。
f1でグループ化したら、f3も一意になるのですか?
もしそうであれば、一般的なSQLとしては文法エラーですが、”MySQLでは拡張仕様”で動きます。
もし一意にならないなら、誤った”MySQLの拡張仕様”の使用になります。
f3が年度で、2009とか、2010とか入っているのでしょうか?
f1は月で、1~12とかが入っているのですか?それとも、年月が入っているのですか?
もし、1~12といった値が入っているなら、group byで結果は12行できる訳ですよね?
そして年度とは、どのようにくっつけるというのでしょうか???
単年度しか集計しないように、検索条件を指定する?
→もしそうなら、そういった提示があって当然ですよね?
年度に関係なく、月別で集計したい?
→もしそうなら、結果に年度をどのようにくっつけるのですか?
No.1
- 回答日時:
MySQL5といった書き方はやめましょう。
MySQLは、4.0以前と4.1以降では、大きな機能追加があり、一部の仕様変更があります。また、MySQL 5.0、5.1も同様です。さらには、一部機能では、MySQL 5.1.xxで仕様変更なんてのもあります。まず、文法の誤り。
select句中にサブクエリを書く場合は、()で囲む必要があります。
例えば、こんな感じ。
select c1,(select c2 from t2 where ・・・) as x from t1
次に、SQLとしての誤り。f3とf1、f2の関係が不明。
標準SQLや主要なRDBMSでは、group by指定時、select句で指定できるのは、
(1)group byで指定した列
(2)maxなどの集計関数
(3)定数
といったもので、それ以外の列を指定することは許されません。
今回のケースでは、f3がどの行のf3かを決められません。MySQLの標準の設定では、これをエラーにせず、結果もユーザ責任という利用者が誤りやすい仕様になっています。
ご回答ありがとうございます。
説明不足で申し訳ありませんでした。
MySQlのバージョンは5.1.39でした。
f1が月度、f2が売り上げ、f3が年度、で、
select SUM(f2) as f2Kei from A GROUP BY f1 from A;
という記述で、f1の月度ごとにf2の売り上げを集計して、それをf2Keiというカラム名で新しくビューに追加したかったのです。f3はテーブルからそのままビューに持ってくるだけ、ということです。
初心者なので、SQL自体あまり理解できておらず、おかしな質問になっているかもしれません。すみません。
その後、
create view vwA as select f3,SUM(f2) as f2Kei from A GROUP BY f1;
で、やりたいことができた感じなのですが、間違ってますでしょうか?
サブクエリを()で囲むということなので、本来は
create view vwA as select f3,(select SUM(f2) as f2Kei from A GROUP BY f1) from A;
が正しい記述ということになるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- 数学 「FFTの基本は、DFTはサンプル数Nが偶数なら 2つのDFTに分解できるということ。 分解するとD 3 2022/03/31 21:01
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL あっってますか?うまくいきません教えてくださいお願いします?? 2 2023/07/01 13:02
- PostgreSQL postgreSQL カラムの全ての値を取得したい 3 2022/10/07 12:33
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UNIONする際、片方テーブルしか...
-
ドロップダウンリストの連動し...
-
SELECT文で、指定カラム以外の...
-
GREATESTで NULLをスルーする方...
-
sql , insert で空行(全ての列...
-
MYSQLで全てのカラムから検索す...
-
一部のカラムでdistinctし全て...
-
カラムをコピーして、新規カラ...
-
構造が異なる二つのテーブルをu...
-
SQLでカラムを追加し、条件に合...
-
MySQLで先頭にカラムを追加
-
ROUND関数で、四捨五入ができな...
-
now()かCURRENT_TIMESTAMPか
-
ホームページまたはブログを自...
-
update時にtimestampが更新され...
-
【SQL】select に ワイルドカー...
-
グルーピングについて。
-
modifyでnot nullを追加出来ない
-
AUTO_INCREMENTに0はダメ?
-
DBの定義のサイズを大きくし過...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一部のカラムでdistinctし全て...
-
SELECT文で、指定カラム以外の...
-
now()かCURRENT_TIMESTAMPか
-
UNIONする際、片方テーブルしか...
-
MYSQLで全てのカラムから検索す...
-
GREATESTで NULLをスルーする方...
-
構造が異なる二つのテーブルをu...
-
カラムをコピーして、新規カラ...
-
SQLでカラムを追加し、条件に合...
-
ドロップダウンリストの連動し...
-
カラムとコラムの使い分け
-
sql , insert で空行(全ての列...
-
エクセルかワードで家系図を作...
-
MySQLで先頭にカラムを追加
-
AUTO_INCREMENTに0はダメ?
-
日付を一括UPDATE
-
DBエラーの意味
-
SQLで、行ごとのとある要素を比...
-
ROUND関数で、四捨五入ができな...
-
SQLについて教えて下さい。 SEL...
おすすめ情報