2012-11-21 3 views
1

나는 내 쿼리에서 일부 계산을하려고하고 postgresql이 mysql과 다르게 math를 처리하지만 나는 차이점을 알지 못한다고 생각한다. 내 개발 환경에서레일 3 - postgresql보다 다른 결과를 반환하는 mysql

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을 사용하고 있습니다 : 이것은 내 내 컨트롤러에서 쿼리입니다. 이것들은 내가 얻는 결과물이다. 이 비율과 총 함께 할 수있는 뭔가가 있어요처럼 보이는

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

:

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

PostgreSQL을 : 참고로, discount_percentage는 20

MySQL을합니다. 누구든지 아이디어가 있습니까? 그건 그렇고, MySQL 결과는 내가 원하는 것입니다.

답변

2

포스트그레스는 정수 나누기를하고 있습니다.

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

그래서 그들 모두 같은 행동을 얻기 위해 x/100.0x/100을 변경합니다.

+0

그랬습니다! 설명 해줘서 고마워. :) 나는 빠르고 쉬운 수정을 좋아한다. – ryanpitts1

관련 문제