2012-11-21 18 views
1

我想在我的查詢中做一些計算,我認爲postgresql處理與MySQL不同的數學,但我不知道差異在哪裏。這是我的控制器的查詢:Rails 3 - mysql比postgresql返回不同的結果

Invoice.find(params[:id], :joins => :invoice_line_items, :select => "invoices.id, SUM(invoice_line_items.hours * invoice_line_items.rate) as subtotal, SUM(invoice_line_items.hours * invoice_line_items.rate) - (SUM(invoice_line_items.hours * invoice_line_items.rate) * (invoices.discount_percentage/100)) as total", :group => "invoices.id") 

在我的開發環境中,我使用mysql,並在我的生產環境中使用postgresql。這些是我得到的輸出。作爲參考,DISCOUNT_PERCENTAGE爲20

MySQL的:

| id | subtotal | total   | 
---------------------------------------- 
| 21 | 570.0000 | 456.00000000 | 

PostgreSQL的:

| id | subtotal | total   | 
---------------------------------------- 
| 9 | 570.0000 | 570.00000000 | 

它看起來像它的東西做的比例和總。有人有主意嗎?順便說一句,MySQL的結果是我想要的。

回答

2

Postgres正在做整數除法。

Select     MySQL Postgres 
----------------------- ----- -------- 
select 999/100 as a  9.99 9 
select 999/100.0 as a 9.99 9.99 

所以,改變x/100x/100.0讓他們兩個有同樣的表現。

+0

這樣做!感謝您的解釋。 :)我喜歡快速,簡單的修復。 – ryanpitts1