このページは解答編です。
↓ネ
↓タ
↓バ
↓レ
↓防
↓止
答えと解説
設問はこちらでした。
P-069: レシート明細データ(receipt.csv)と商品データ(product.csv)を結合し、顧客毎に全商品の売上金額合計と、カテゴリ大区分コード(category_major_cd)が”07″(瓶詰缶詰)の売上金額合計を計算の上、両者の比率を求めよ。抽出対象はカテゴリ大区分コード”07″(瓶詰缶詰)の売上実績がある顧客のみとし、結果を10件表示せよ。
※最終結果はcustomer_idの昇順で並び替えること
※売上金額合計はsum_all、07のみの売上金額合計はsum_07とし、比率はsales_rateとすること
解答ワークフローは以下のようになります。
複合的な問題となりますが地道にワークフローを構築しましょう。
ポイントは、全体合計と特定のカテゴリのデータに絞ったデータの合計と2つの合計を作成し、結合を行い、割合を計算する形になることです。
それでは実際のワークフローを作って行きたいと思います。
まず、単価(unit_price)については計算を行っていくので、セレクトツールで型変換を行っていきましょう。オートフィールドツールで調べるとInt16型がベストマッチのようですので、Int16型にしていきます。また、不要なフィールドも削除します。
まず全体合計を出しましょう。集計ツールを使います。customer_idごとにamountの合計を計算するので、customer_idでグループ化し、amountの合計を取ります。amountの合計については、フィールド名をsum_allとしてください。
ここの時点では以下のようなワークフローになります。
全体合計の流れは一旦止めておいて、次に「カテゴリ大区分コード(category_major_cd)が”07″(瓶詰缶詰)の売上金額合計」を作っていきましょう。
receipt.csvのデータにはカテゴリ大区分コード(category_major_cd)が存在しないので、product.csvを結合して情報を得る必要があります。結合ツールを使って、セレクトツールの出力とproduct.csvを結合していきましょう。そのために、以下のように結合ツールを接続します。
設定としては、以下の通りキーフィールドを「product_id」とします。product.csvのうち必要な項目はcategory_major_cdのみなので、それ以外の項目のチェックは外しておきます。
さらに特定のカテゴリ大区分コードに絞り込むので、フィルターツールを使っていきましょう。
今回のケースであれば、上のように基本フィルターでcategory_major_cdが「07」と等しい、ということになります。
これで必要なデータに絞り込めたので、集計ツールを使って合計を計算します。こちらも同じくcustomer_idでグループ化し、amountの合計を取ります。amountの合計のフィールド名はsum_07としておきます。
ここまでで以下のように2つのデータストリームがあるかと思います。全体の合計と07のみの合計です。
これらをcustomer_idをキーに結合していきます。
設定は以下の通りです。
ここまでくればあとは2つの合計の比率を取るだけです。フォーミュラツールで計算していきましょう。
[sum_07]/[sum_all]
データ型はDoubleで問題ありません。
あとは、ソートツールでcustomer_idの昇順で並び替え、サンプリングツールなどで先頭から10件抽出すれば完了です。
まとめ
今回は集計、結合、計算と複合的な問題となります。一つずつ進めていけばそれほど難しくありませんので、やるべきことを地道に進めましょう。
コメント