前提・実現したいこと
顧客ID,購入日,購入回数,商品コード,枝番,商品名という項目で構成された購入回数テーブルがあります。
この購入回数というのは、同じ顧客IDで複数回購入した場合のN回目という値が入っています。
|行数|顧客ID|購入日|購入回数|商品名|
|:--|:--:|--:|
|1|001|2020/01/01|1|AAA
|2|001|2020/01/10|2|CCC
|3|002|2020/01/15|1|BBB
|4|002|2020/01/18|2|CCC
|5|003|2020/01/20|1|DDD
|6|003|2020/01/25|2|EEE
このテーブルから同じ顧客IDで購入回数2回目と1回目の差の平均を求めたいのですが、
自己結合してサブクエリを作るなど模索してみたものの
どのようにSQLを書いてよいのかがわかりません。
テーブルのレコード数としては118万行ほどです。
上記のデータを元にした場合、得たい結果としては下記のようになります。
顧客ID001の2レコード目と1レコード目の差 select 購入日 from 購入回数テーブル where 顧客ID='001' and 購入回数=2 の購入日から select 購入日 from 購入回数テーブル where 顧客ID='001' and 購入回数=1 の購入日の日数の差を出す。上記の例では9日 2回商品を購入している顧客すべてに対して上記の差を求めて平均を出す ID002の1回目と2回目の差→3日 ID003の1回目と2回目の差→5日 3人の顧客の1回目と2回目の差の日数の平均→(9+3+5)/3→5.667
こういった場合、どのような書き方をすればよいのでしょうか。
よろしくお願いします。
###環境
Macローカルpostgresql(pgadmin)
回答2件
あなたの回答
tips
プレビュー