こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【mySQL】会計履歴から来店時点の来店回数を調べ

【mySQL】会計履歴から来店時点の来店回数を調べたい

新しいフランスパンの開発のために
過去のフランスパンの購入者情報を調べたいです。
ほしい情報は、購入者と購入日、商品、購入時点での来店回数です。

【会計履歴テーブル】
会計id|購入日|購入者|商品名|来店フラグ
00001|2015/4/01|Aさん|食パン|1
00002|2015/4/01|Bさん|食パン|1
00003|2015/4/01|Cさん|食パン|1
00004|2015/4/15|Bさん|フランスパン(ハード系)|1
00005|2015/4/23|Aさん|菓子パン|1
00006|2015/4/26|Aさん|フランスパン(ハード系)|1
00007|2015/5/07|Bさん|食パン|1
00008|2015/5/10|Bさん|菓子パン|0
00009|2015/5/12|Cさん|フランスパン(ソフト系)|1
00010|2015/5/13|Bさん|フランスパン(ソフト系)|1
00011|2015/5/13|Cさん|食パン|1
00012|2015/5/20|Bさん|菓子パン|1


会計履歴テーブルから次のようにSQLを作って
フランスパンの購入者を絞りこめるところまではできました。

Select * From 会計履歴テーブル
Where 商品名 IN ('フランスパン(ハード系)', 'フランスパン(ソフト系)');

【フランスパン購入者一覧】
会計id|購入日|購入者|商品名
00004|2015/4/15|Bさん|フランスパン(ハード系)
00006|2015/4/26|Aさん|フランスパン(ハード系)
00009|2015/5/12|Cさん|フランスパン(ソフト系)
00010|2015/5/13|Bさん|フランスパン(ソフト系)


ここに来店回数を追加して下記のような表を作りたいのです。
【フランスパン購入者一覧】
会計id|購入日|購入者|商品名|来店回数
00004|2015/4/15|Bさん|フランスパン(ハード系)|2回
00006|2015/4/26|Aさん|フランスパン(ハード系)|3回
00009|2015/5/12|Cさん|フランスパン(ソフト系)|2回
00010|2015/5/13|Bさん|フランスパン(ソフト系)|4回


会計履歴テーブルに来店フラグを持っていて
来店したかどうかは来店フラグで見ていましたので
購入者でGROUP化して、SUM(来店フラグ)しましたが、ほしい形になりません。

どのようなSQL文にしたらいいでしょうか。
考え方だけでもヒントを頂けると助かります。

投稿日時 - 2017-09-12 01:13:50

QNo.9373615

すぐに回答ほしいです

質問者が選んだベストアンサー

Select *,
(
select count(会計id) from 会計履歴テーブル as kaikei2
where
kaikei2.購入者= kaikei1.購入者
and kaikei2.購入日<= kaikei1.購入日
and kaikei2.来店フラグ= 1
) as 来店累計回数
From 会計履歴テーブル as kaikei1
Where
kaikei1.商品名 IN ('フランスパン(ハード系)', 'フランスパン(ソフト系)')
and kaikei1.来店フラグ = 1;

投稿日時 - 2017-09-12 13:15:50

補足

これは、相関サブクエリってものでしょうか。

投稿日時 - 2017-09-13 13:23:31

お礼

muuming2001様
ご回答ありがとうございます。

これです!欲しい情報がとれました。
さすがです。ありがとうございます!!

カラムにSELECT文が使えるなんて知りませんでした。。。
もっと勉強します。

投稿日時 - 2017-09-13 13:19:17

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

最終的にどんな表にしたいのかイマイチ不明かと思います。

来店回数とは何でしょうか?
00004|2015/4/15|Bさん|フランスパン(ハード系)|2回
00010|2015/5/13|Bさん|フランスパン(ソフト系)|4回

なぜ2回と4回に?

来店フラグって何も見ない?

>>ほしい形になりません。
最終的にほしい形を途中経過無しに、言葉で書いていただいたほうがわかり良いかも?

投稿日時 - 2017-09-12 10:53:34

お礼

回答ありがとうございます。

すみません。言葉足らずで申し訳ないです。

定義としては
・来店回数は、フランスパンを買った時点での、初回来店からカウントしてそのお客様がお店にいらした回数です。
・来店フラグは、1が「来店あり」で、0が「来店なし」です。


2回と4回になる理由としては、フランスパン購入時点ごとに初回来店から来店ありの会計数をカウントしています。

例えば、Bさんは、
2015/4/15に、フランスパン(ハード系)を
2015/5/13に、フランスパン(ソフト系)を
買っています。

会計履歴テーブルを見ると、
Bさんは
2015/4/15にフランスパンを買った時点では
2015/4/1に食パンを買いにきてくださっているので
2回目の来店となります。

同様に
2015/5/13にフランスパンを買った時点では
4/1の初回来店からカウントして5回の会計がありますが
5/10の来店フラグが0(来店なし)なので、4回の来店となります。


最終的にほしいのは、フランスパンを購入した
購入者、購入日、商品名、購入時点での来店した回数です。
購入者の重複があっても構いません。


宜しくお願い致します。

投稿日時 - 2017-09-12 11:28:51

あなたにオススメの質問