かなめのロジック

フリーSEの雑記ブログ。ORACLEやPostgreSQL、情報セキュリティ、金融について主に書いています。

集計処理と端数処理、どっちが先か

time 2016/01/26

集計処理と端数処理、どっちが先か

集計処理と端数処理の順番の考慮が重要になることがあります。処理順によって、計算結果が変わってくる事があるためです。
これはORACLEに限った話ではありませんが、SQLを記述する際にも考慮が必要な話なので、本記事にまとめました。

sponsored link

集計処理と端数処理の順番による差異

集計処理と端数処理の順番で、計算結果が変わることがあります。具体的な例で見てみましょう。

計算結果が変わることがわかります。

要件を確認しよう

このあたりの計算方法は、仕様をユーザーに確認しましょう。思い込みで設計すると、本来の仕様と異なっているかもしれません。

例えば、厳密に決められていると何となく思ってしまう消費税の計算すら、企業によって異なっている場合があります。(端数処理自体も切捨て、四捨五入、切上げと好きに選んでよいのです。大体は切捨てですが。)

消費税に限らず、集計処理と端数処理の順番は単体テストや結合テストで発見できない事が多いです。正しいと思い込んでいるシステム構築担当がテストケースの作成&実施をするためです。

ではユーザーの受入テストで見つけられるのか、といえばそれも怪しいです。実際のテストデータはシステム構築担当が用意したり、ユーザー側もそこまで細かいパターンを確認しないという場合も多いためです。

最悪、本番化してから障害発覚という最悪のケースも想定されます。

まとめ

集計処理と端数処理の順番について、重要であることが分かっていただけたと思います。

SQL内では端数処理しかせずに、外側の処理で集計しているというケースもあります。
また整数しか保持できない変数に代入することで、暗黙的に端数処理がされているケースもあります。

意識して設計をしましょう。

sponsored link

管理人

かなめ

フリーの業務系システムエンジニア。情報処理安全確保支援士。 ORACLEと金融と子育ての狭間で、元気に楽しくやってます。 [詳細]

管理人twitter

ブログ村



sponsored link