
店舗の毎日の売り上げを、日付・販売員名・売り上げ額のテーブルで集計しています。
【テーブル例1】
date, name, price
2014-05-01,吉田,2400
2014-05-01,佐藤,1500
2014-05-02,佐藤,3000
...(中略)...
2014-06-18,佐藤,3000
2014-06-30,吉田,1000
これを月別、販売員別の金額で次のように集計したいのですが、
【例2】
各販売員がその月に売り上げた金額の合計
2014-5 吉田 205000
2014-5 佐藤 120000
2014-6 吉田 75000
2014-6 佐藤 90000
SELECT文における"GROUP BY"の条件を、"GROUP BY date AND name"のように"AND"でつなげてもうまくいきませんでした。
もちろん、条件をひとつだけにした"GROUP BY date" および "GROUP BY name"では、それぞれ日付別の集計、あるいは販売員名別の集計が出ます。
【質問】
1.GROUP BYは複数の条件をつけることができないのでしょうか?
2.どのようにすれば【例2】の集計ができますか?
No.1ベストアンサー
- 回答日時:
select year(date) as Y, month(date) as M, name, sum(price)
from SAMPLE_TABLE
group by Y, M, name
って感じ?
No.2
- 回答日時:
月ごとに集計するのが決まっているのであれば、できればそれ用のカラムを用意しておくと
集計の効率がたかくなり
//集計用カラムを用意しない場合
create table tbl1 (id int not null primary key auto_increment,salesdate date, name varchar(20), price int,index(salesdate,name,price));
insert into tbl1 (salesdate,name,price) values(
'2014-05-01','吉田',2400),(
'2014-05-01','佐藤',1500),(
'2014-05-02','佐藤',3000),(
'2014-05-03','佐藤',10000),(
'2014-05-04','佐藤',100),(
'2014-06-18','佐藤',3000),(
'2014-06-30','吉田',1000);
//集計
select DATE_FORMAT(salesdate,'%Y%m') as ym,name ,sum(price) as amount from tbl1 group by ym,name;
//集計用カラムを用意する場合
create table tbl2 (id int not null primary key auto_increment,salesdate date,ym varchar(6), name varchar(20), price int,index(ym,name,price));
insert into tbl2 (salesdate,name,price) values (
'2014-05-01','吉田','2400'),(
'2014-05-01','佐藤','1500'),(
'2014-05-02','佐藤','3000'),(
'2014-05-03','佐藤','10000'),(
'2014-05-04','佐藤','100'),(
'2014-06-18','佐藤','3000'),(
'2014-06-30','吉田','1000');
update tbl2 set ym=DATE_FORMAT(salesdate,'%Y%m');
//集計
select ym ,name ,sum(price) as amount from tbl2 group by ym,name;
それぞれの集計SQLをEXPLAINすると効率の違いがわかると思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Excel(エクセル) 年齢ごとの商品の販売個数を集計しようとしています。 a列が日付、b列が年齢、c列が販売個数のばあいで 4 2022/09/26 22:35
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- その他(お金・保険・資産運用) 至急!【Wolt】各メニューの価格設定の簡単な計算方法 3 2023/03/05 11:58
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- 財務・会計・経理 【仕訳】集計されて引かれる販売手数料について 5 2023/04/26 15:32
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- 経済 レギュラーガソリンが170円超えたら国からが石油元売り会社に補助金が支給されるとのこと。 でも、それ 4 2022/04/17 10:50
- Excel(エクセル) EXCELピボットテーブル関数について 2 2023/04/10 20:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【MYSQL】asでリネームしてwher...
-
SQL文で右から1文字だけ削除す...
-
チェックボックスの項目をDBにi...
-
MySQLのクエリについて
-
結合での取得のしかた
-
【初歩】ラジオボタンをつかっ...
-
MySQL のデータからドロップダ...
-
初心者Mysqlの関数のsubstring...
-
決定性有限オートマトン
-
ファイル書込みで一行もしくは...
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
ADO VBA 実行時エラー3021
-
SELECTで1件のみ取得するには?
-
アクセスでレポートの1印刷内...
-
OracleのSQL*PLUSで、デー...
-
DataGridViewの内容をDBに反映...
-
Excelでセルの書式設定を使用し...
-
select insertで複数テーブルか...
-
GROUP BYを使ったSELECT文の総...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL文で右から1文字だけ削除す...
-
使うべきでない文字。
-
sum()の出力結果順に並び替えを...
-
割合(パーセント)を求めるに...
-
【初歩】ラジオボタンをつかっ...
-
MySQLで MAX()とGROUP BYを使う...
-
【MYSQL】asでリネームしてwher...
-
チェックボックスの項目をDBにi...
-
SQLの集計で「全て」の合計も表...
-
カウント結果を1レコードの中...
-
表示幅を短くしたい
-
重複が
-
月別、販売員別の集計がわかり...
-
何にかが違うから エラーなんで...
-
SQLでデータを整形して取得可能...
-
1つのテーブルから複数のテーブ...
-
MySQL のデータからドロップダ...
-
Oracleの監視。
-
抽出時のことで質問です
-
JOINでの結果取得 サブクエリ...
おすすめ情報