前提
PHPとデータベースを使って、帳票を出力するプログラムを作りました。
現在、最終的な計算は、手入力による編集も加味してEXCELのシートに落とし込んでいます。
これをSQL上で計算して表示させたいと思ってプログラミングを始めたところです。
MariaDB上の「SELECT」構文に計算式を入れて算出した結果では、計算結果が「55773」となるのですが、EXCELで関数を用いて計算した結果が「55782」となり、結果が異なってしまいます。
どちらの結果を信じれば良いのか分かりません。
発生している問題
PHP上のSQL構文には、下記のようにして計算しています。
SQL
1( 計算結果:55773 ) 2 SELECT 3 `_mid_`, 4 ( ROUND ( (`upric` - ROUND ( ( `smmtm` + `smhtm` + `smprm` + `smcsm` ) / `_pq__` ) ) / ( `plast` - `_evq_` ) ) * `_rq__` ) * ( `pnow_` - `_evq_` ) + ( `smmtm` + `smhtm` + `smprm` + `smcsm` ) AS `_ttl_` 5 FROM 6 `vw_b011ls_mxr` 7 LEFT JOIN 8 `vw_b011ls_sum` 9 ON 10 `vw_b011ls_mxr`.`_mid_` = `vw_b011ls_sum`.`_sid_` 11 GROUP BY 12 `vw_b011ls_mxr`.`_mid_` 13 14 15【 備 考 】 計算結果は『 `_ttl_` 』へ出力しています。
EXCEL関数
1( 計算結果:55782 ) 2 3=IFERROR((($AC7-($AB7/$X7))/($Z7-$AA7)*$O7*($Y7-$AA7))+$AB7,"")
実現したいこと
- 今までEXCELで出力してきたので、計算結果がEXCELの関数を使用した結果をもとにしていたので、SQL構文でも同じ計算結果が得られるようになりたい。
試したこと
- EXCEL関数での計算結果とSQL構文による計算結果の差分が「9」ということもあり、計算式内部の小数点の取り扱い(切り上げ?四捨五入?切り捨て?)が問題なのかと思い、全てのパターンで検証したところ、下記の通りの結果となり、どれもEXCEL関数の計算結果と異なってしまいました。
- ( ROUND : ROUND ) ・・・・・ 55773 NG
- ( ROUND : FLOOR ) ・・・・・ 55773 NG
- ( ROUND : CEILING ) ・・・・・ 55773 NG
- ( FLOOR : ROUND ) ・・・・・ 55773 NG
- ( FLOOR : FLOOR ) ・・・・・ 55773 NG
- ( FLOOR : CEILING ) ・・・・・ 55773 NG
- ( CEILING : ROUND ) ・・・・・ 55839 NG
- ( CEILING : FLOOR ) ・・・・・ 55839 NG
- ( CEILING : CEILING ) ・・・・・ 55839 NG
- もしかしたら、EXCEL関数側に問題があるかもしれないと思って、何度も計算式を確認したところ、この計算式に間違いないことがわかりました。
せめてその計算結果の基になった数字がないと何とも言えないような気が
回答2件
あなたの回答
tips
プレビュー