I checked both oracle and impala and in both 1/3 is 0.333 and not 0. I think that SQL writer is not a programmer and he does not care about data type. He just want to get the correct results. BTW – it is not only constant, even expression like sum(case when <condition > then 1 else 0 end) / count(*) will get wrong results unless you will start implementing workarounds
From: John Hancock [mailto:jhancock1...@gmail.com] Sent: Thursday, September 22, 2016 12:56 PM To: email@example.com Subject: Re: can I prevent rounding of a/b when a and b are integers I think it is fairly standard in programming languages for / to mean integer division when the operands used are integers. Therefore 1/3=0 is not a surprising result to me; other programming languages I have worked in give 1/3=0. However if one of the operands to / is a decimal, the result is also decimal, so 1.0/3 = 0.333... I don't think the behavior of / is incorrect as is. On Thu, Sep 22, 2016 at 4:45 AM, Heather, James (ELS-LON) <james.heat...@elsevier.com<mailto:james.heat...@elsevier.com>> wrote: On Thu, 2016-09-22 at 05:39 +0000, Bulvik, Noam wrote: We have an app that let user write their own SQL Um, do they write DROP TABLE statements in there? ________________________________ Elsevier Limited. Registered Office: The Boulevard, Langford Lane, Kidlington, Oxford, OX5 1GB, United Kingdom, Registration No. 1982084, Registered in England and Wales. ________________________________ PRIVILEGED AND CONFIDENTIAL PLEASE NOTE: The information contained in this message is privileged and confidential, and is intended only for the use of the individual to whom it is addressed and others who have been specifically authorized to receive it. If you are not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, or if any problems occur with transmission, please contact sender. Thank you.