このページは解答編です。
↓ネ
↓タ
↓バ
↓レ
↓防
↓止
答えと解説
設問はこちらでした。
P-066: 商品データ(product.csv)の各商品について、利益率が30%となる新たな単価を求めよ。今回は、1円未満を丸めること(四捨五入または偶数への丸めで良い)。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)には欠損が生じていることに注意せよ。
※新しい価格はnew_price、新しい単価での利益率はnew_profit_rateというフィールド名とすること
解答ワークフローは以下のようになります。
65問目で行っている計算の中で1円未満を切り捨てていましたが、今回は1円未満を丸める(四捨五入)というのが異なるポイントです。
実際のワークフロー
それでは、実際のワークフローを作っていきましょう。
まず、単価(unit_price)と原価(unit_cost)については計算を行って行くので、セレクトツールで型変換を行っていきましょう。オートフィールドツールで調べるとInt16型がベストマッチのようですので、Int16型にしていきます。また、不要なフィールドも削除します。
次にフォーミュラツールで計算していきます。新しい価格(new_price)は、原価(unit_cost)÷(1-利益率)から求められます。つまり、以下のような計算式となります。1円未満は四捨五入となるので、Round関数で四捨五入します。
Round関数
Round関数は、指定した値の最も近い倍数に丸めを行う関数です。書式は以下のとおりです。
Round(x, mult)
引数 | データ型 | 詳細 |
---|---|---|
x | 数値型 | 処理を行う値 |
mult | 数値型 | この値の倍数でxを丸めます |
さて、元のワークフローに戻ります。以下のように計算結果に対してmultの値を1とすると、通常の四捨五入が行われます。
Round([unit_cost]/(1-0.3), 1)
データ型はInt16で問題ないと思います。
次に、確かめ算が必要なので、新しい価格で利益率を計算してみましょう。
同じフォーミュラツールに計算式を追加しましょう。
([new_price]-[unit_cost])/[new_price]
新しい利益率は、フィールド名をnew_profit_rateとし、データ型はDouble型とします。念のため、結果を見てみると以下のように30%くらいの利益率になっています。
これで完了です。
まとめ
今回も、算数の問題でした。65問目との違いは新単価の端数処理だけです。今回はRound関数を用いた四捨五入でした。
コメント