〇やりたいこと
社員名、各社員の売り上げ、日付のデータが格納されたテーブルを、
社員名毎に、各月の売り上げ平均を表示させるようにしたい。
///テーブルイメージ///
社員名 |売り上げ |日付
ーーーーーーーーーーーーーーー
Aさん |5000 |2009/04/01
ーーーーーーーーーーーーーーー
Bさん |4500 |2009/7/23
ーーーーーーーーーーーーーーー
~
このテーブルを、、、
社員名 |1月売り上げ平均 |2月売上平均
ーーーーーーーーーーーーーーー
Aさん |32300 |43400
ーーーーーーーーーーーーーーー
Bさん |23200 |23200
ーーーーーーーーーーーーーーー
~
このように表示させたいです。(数字は適当です)
〇困っていること
各月の売り上げ平均は出せるのですが、1つにまとめられません。
自己結合をさせるべきかと考えているのですが、私の書き方がではSELECT文が複数にわたり、それぞれのSELECT文に対して別のWHEREで条件付けをする必要が出ています。
(以下自分が考えているコード)
SQL
1SELECT 社員名 , TO_CHAR(AVG(売上)) AS "1月分" FROM 社員テーブル GROUP BY 社員名 WHERE TO_CHAR(日付,'MM') = '01';
上記のコードでまず1月分の社員名と月売り上げ平均が取れます。
どうように2月、3月と書いてみたのですが、
それらをどのようにして1つにまとめたらよいのかがわからないです。
〇試してみたこと
・UNIONでまとめてみました。そうすると名前、1~12月までの平均を全て出せるのですが、
表のカラムが1行になり、縦に並べられてしまいます。
・JOINでまとめてみました。
これならば横に並ぶ蓮なのですが、WHERE区での条件指定が最後の1文にしか書けず、
複数のSELECT文に違った条件(月の指定を変える)ことができません。
アドバイスをお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/10 09:16