我有一个查询,我使用 COUNT 来计算供应商的销售额。我需要获得该供应商一个月内的平均销售额。这只是 COUNT 除以天数。问题是 COUNT 返回一个 int,如果我将它除以一个更大的数字,它只会返回零。所以,我想用这个:
CAST(COUNT(sales) as FLOAT)/X
其中 X 是天数。问题是我不能在命名查询上使用 CAST。有没有其他方法可以做到这一点,所以我不必使用 CAST?
如果您使用 createSQLQuery() 方法,它会自动将结果转换为十进制数,而无需任何转换/转换。
List l1 = ss.createSQLQuery("SELECT 1/100 FROM DUAL").list(); //0.0100
但如果是 createQuery() 方法,则可以通过强制转换为 big_decimal
List l2 = ss.createQuery("SELECT cast(1/100 as big_decimal),yourMappedColumn FROM yourMappedTable").list(); //0.01