Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
ストレートテーブル作成にあたって、わからない部分があり、ご教示いただきたく、質問いたします。
ゴール:商品ごとの「購入者の平均年齢」を算出したい
サンプルデータ:
商品 顧客 年齢
A 0001 20
A 0002 30
A 0001 20
B 0003 40
B 0004 20
軸を「商品」として、数式の書き方なのですが、
商品Aの購入者は顧客0001と顧客0002なので、平均年齢は(20+30)/2=25歳となりますが、
顧客0001が2回購入しているため、Avg(年齢)とすると(20+30+20)/3=23.33歳となってしまいます。
これを、25歳と表示されるように式を書きたいのですが、どのように指定したらいいのかわかりません。
初歩的な質問で申し訳ないのですが、何卒ご教示ください。
よろしくお願いいたします。
これでどうでしょうか?
avg(aggr(avg(distinct 年齢),商品,顧客))
軸には商品しか設定していないみたいですが、実際には商品、顧客ごとに集計する必要が
あるため、aggr関数で何ごとに集計するかを定義しています。
avg(DISTINCT 年齢)でできます。
ダブりをなくしたいときはDISTINCTを使うと便利です。
sum、Countなど他の関数でも使用できますよ。
ご回答いただき、ありがとうございます。
私のサンプルがうまくなかったのですが、追加でお聞きしてもよろしいでしょうか。
商品 顧客 年齢
A 0001 20
A 0002 30
A 0001 20
A 0005 20
となっているとき、顧客の平均年齢は(20+30+20)/3=23.33歳ですが、
前回のサンプルで教えていただいたavg(DISTINCT 年齢)という式だと、25歳になってしまいます。
この場合、どのような式にしたら23.33歳と表示されるのでしょうか。
お手数をおかけいたしますが、ご教示いただけると幸いです。
よろしくお願いいたします。
これでどうでしょうか?
avg(aggr(avg(distinct 年齢),商品,顧客))
軸には商品しか設定していないみたいですが、実際には商品、顧客ごとに集計する必要が
あるため、aggr関数で何ごとに集計するかを定義しています。
ご回答いただき、ありがとうございます。
確認が遅くなり、申し訳ありません。
顧客ごとにも集計しているという考えが抜けていました。
解決しました!
ありがとうございます。
ちなみに、この場合
avg(aggr(avg(distinct 年齢),商品,顧客))
avg(aggr(avg(distinct 年齢),顧客,商品))
どちらでも集計結果は変わらないと思ってよいでしょうか?
実際のデータで試してみましたが、同じようです。
この「商品」と「顧客」の順序に意味はあるのでしょうか。
何度も申し訳ありません。
よろしくお願いいたします。
商品、顧客の順番は関係あります。
基本的には左から親、子、孫というような形でグルーピングしています。
サンプルデータでは結果が変わりませんが、軸項目が増えてくると結果が変わってきます。
軸の順番は意味があるのですね。
サンプルデータでも本データでも変わらなかったので、わからなくなってしまいました。
集計の優先順で位置を決めるということですね。
理解できました。
何度もご回答いただき、ありがとうございました!