Tea*_*Tea 2 sql sql-server calculation
我在查询之后做了这个,但是它为每个orderStatusName给出了0的结果,有谁知道问题在哪里?
with tbl as (
select s.orderstatusName, c.orderStatusId,count(c.orderId) counts
from [dbo].[ci_orders] c left join
[dbo].[ci_orderStatus] s
on s.orderStatusId = c.orderStatusId
where orderedDate between '2018-10-01' and '2018-10-29'
group by orderStatusName, c.orderStatusId
)
select orderstatusName, counts/(select sum(counts) from tbl as PofTotal) from tbl
Run Code Online (Sandbox Code Playgroud)
结果是:0
你正在使用所谓的整数数学.在SQL(Server)中使用2个整数时,返回值也是一个整数.例如2 + 2 = 4,5 * 5 = 25.这同样适用于分裂8 / 10 = 0.那是因为0.8它不是一个整数,但返回值将是1(因此小数点会丢失).
更改此行为的常用方法是将其中一个表达式乘以1.0.例如:
counts/(select sum(counts) * 1.0 from tbl) as PofTotal
Run Code Online (Sandbox Code Playgroud)
如果您需要更精确,你可以增加的十进制值的精度1.0(即1.000,1.0000000等).
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |