Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

計算する値を限定する数式の書き方について

ストレートテーブル作成にあたって、わからない部分があり、ご教示いただきたく、質問いたします。

ゴール:商品ごとの「購入者の平均年齢」を算出したい

サンプルデータ:

商品   顧客  年齢

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歳と表示されるように式を書きたいのですが、どのように指定したらいいのかわかりません。

初歩的な質問で申し訳ないのですが、何卒ご教示ください。

よろしくお願いいたします。

1 Solution

Accepted Solutions
kogasawara
Partner - Creator
Partner - Creator

これでどうでしょうか?

avg(aggr(avg(distinct 年齢),商品,顧客))

軸には商品しか設定していないみたいですが、実際には商品、顧客ごとに集計する必要が

あるため、aggr関数で何ごとに集計するかを定義しています。

View solution in original post

6 Replies
hka
Employee
Employee

avg(DISTINCT 年齢)でできます。

ダブりをなくしたいときはDISTINCTを使うと便利です。

sum、Countなど他の関数でも使用できますよ。

Not applicable
Author

ご回答いただき、ありがとうございます。

私のサンプルがうまくなかったのですが、追加でお聞きしてもよろしいでしょうか。

商品   顧客  年齢

A     0001  20

A     0002  30

A     0001  20

A     0005  20

となっているとき、顧客の平均年齢は(20+30+20)/3=23.33歳ですが、

前回のサンプルで教えていただいたavg(DISTINCT 年齢)という式だと、25歳になってしまいます。

この場合、どのような式にしたら23.33歳と表示されるのでしょうか。

お手数をおかけいたしますが、ご教示いただけると幸いです。

よろしくお願いいたします。

kogasawara
Partner - Creator
Partner - Creator

これでどうでしょうか?

avg(aggr(avg(distinct 年齢),商品,顧客))

軸には商品しか設定していないみたいですが、実際には商品、顧客ごとに集計する必要が

あるため、aggr関数で何ごとに集計するかを定義しています。

Not applicable
Author

ご回答いただき、ありがとうございます。

確認が遅くなり、申し訳ありません。

顧客ごとにも集計しているという考えが抜けていました。

解決しました!

ありがとうございます。

ちなみに、この場合

avg(aggr(avg(distinct 年齢),商品,顧客))

avg(aggr(avg(distinct 年齢),顧客,商品))

どちらでも集計結果は変わらないと思ってよいでしょうか?

実際のデータで試してみましたが、同じようです。

この「商品」と「顧客」の順序に意味はあるのでしょうか。

何度も申し訳ありません。

よろしくお願いいたします。

hka
Employee
Employee

商品、顧客の順番は関係あります。

基本的には左から親、子、孫というような形でグルーピングしています。

サンプルデータでは結果が変わりませんが、軸項目が増えてくると結果が変わってきます。

Not applicable
Author

軸の順番は意味があるのですね。

サンプルデータでも本データでも変わらなかったので、わからなくなってしまいました。

集計の優先順で位置を決めるということですね。

理解できました。

何度もご回答いただき、ありがとうございました!