※ ChatGPTを利用し、要約された質問です(原文:ACCESS SQLクエリーの活用について)
ACCESS SQLクエリーの活用について
このQ&Aのポイント
ACCESS SQLクエリーを使用してデータ群(テーブル名:table1)を集計する方法について説明します。
具体的なSQLクエリーを使用し、注文日、会員番号、商品名、購入回数、LTVの情報を取得します。
さらに、テーブルに存在する他の列(氏名、都道府県など)を表示するためには、手打ちで列名を追加する必要があります。
以下データ群(テーブル名:table1)があります(会員番号はユニークをあらわします)。
注文日 会員番号 商品名 価格
2014/04/11 123456 パンツ 1000 ←一番古い注文日の行(4/11開始)が先頭
2014/04/20 123456 靴下 3000
2014/05/23 456789 半袖 2000
2014/05/23 456789 靴下 3000
2014/05/29 456789 パンツ 1000
2014/05/30 987654 靴下 3000
2014/06/09 987654 寝巻き 5000
2014/06/15 987654 下駄 4000
そして、
SELECT Q4.注文日, Q4.会員番号, Q4.商品名, Q3.購入回数, Q3.LTV
FROM
(SELECT Q1.注文日, Q1.会員番号,
Count(Q2.会員番号)+1 AS 購入回数,
DateDiff('d', Nz(Min(Q2.注文日),Q1.注文日), Q1.注文日) AS LTV
FROM
(SELECT 会員番号, 注文日 FROM ★★ GROUP BY 会員番号, 注文日) AS Q1
LEFT JOIN
(SELECT 会員番号, 注文日 FROM ★★ GROUP BY 会員番号, 注文日) AS Q2
ON Q1.会員番号=Q2.会員番号 AND Q1.注文日>Q2.注文日
GROUP BY Q1.会員番号, Q1.注文日) AS Q3
LEFT JOIN ★★ AS Q4
ON Q3.会員番号=Q4.会員番号 AND Q3.注文日=Q4.注文日
ORDER BY Q4.会員番号, Q4.注文日
;
達人からアドバイスいただいていた
上記SQLクエリーからの表示は
注文日 会員番号 商品名 購入回数 LTV
2014/04/11 123456 パンツ 1 0
2014/04/20 123456 靴下 2 9
2014/05/23 456789 半袖 1 0
2014/05/23 456789 靴下 1 0
2014/05/29 456789 パンツ 2 6
2014/05/30 987654 靴下 1 0
2014/06/09 987654 寝巻き 2 10
2014/06/15 987654 下駄 3 16
と出ます(GOOD!!!)。
上記に付随して、
このクエリーが参照しているテーブルの他の列(例:氏名、都道府県)もある(集計対象ではない)場合でそれも追加で(列名:氏名、都道府県を)表現するためには、
SELECT Q4.注文日, Q4.会員番号, Q4.商品名, Q3.購入回数, Q3.LTV
の構文箇所に2つの列名も手打ちで追加する必要がありますでしょうか。
(テーブル列名すべてを表示する・・といった個別に列名を指定しないで表示する方法はあるのでしょうか<列名が多いときに手間が若干かかる)
お礼
いすれもありがとうございます! 後ほど試してみます!!!