A small lesson in typology and reasoning:

CASEWHEN(STATUS_ID=1,1,0) : TYPE = INTEGER
SUM(X) : TYPE = INTEGER if X is INTEGER
X/Y : TYPE = INTEGER if X is INTEGER

Because division usually produces non integers the result is converted to integer by rounding.
This is an arbitrary decision in general.
Java division always produces real numbers whereas H2 (and maybe SQL?) produces numbers of the same type as dividend (that is just my quess actually).

So in your situation if you cast the type of dividend to decimal or real like this
SELECT
CAST(
    SUM(
        CASEWHEN(
            STATUS_ID=1,1,0
        )
    )
AS DECIMAL)
/
COUNT(*)
FROM TICKET
You will be pleasantly surprised.

To analyze this case all I needed was 15 minutes and a little bit of fact checking from H2 website.
You should try the same.

- Rami


On 3.10.2012 19:40, Gordam Gordam wrote:
Hi everyone.

I have this SQL:
SELECT SUM(CASEWHEN(STATUS_ID=1,1,0))/COUNT(*) AS PERCENT_WIN
FROM TICKET;

Result of this q/uery is always zero. I don't know why, both aggregations return value grater then zero that is for sure, but this does not work always ZERO!? Is this some kind of issue with h2 or not supported?

I am using Version 1.3.169 (2012-09-09) on windows 7 if that is of some importance.

Thank you in advance for help!
bye.
--
You received this message because you are subscribed to the Google Groups "H2 Database" group. To view this discussion on the web visit https://groups.google.com/d/msg/h2-database/-/sF2h0SshWg4J.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/h2-database?hl=en.

--
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to