如何在 SQL Server 中使用 sum 进行计算
Posted
技术标签:
【中文标题】如何在 SQL Server 中使用 sum 进行计算【英文标题】:How do you calculate using sum in SQL Server 【发布时间】:2020-04-19 14:36:50 【问题描述】:我正在尝试这样的事情:
select sum(R_Value) ,((5/cast(sum(R_Value) as int)) * 100.000000000)
from R_Rating
where R_B_Id = 135
但我一直得到值 0,sum(R_Value) = 6,所以我只想要 (5/sum(R_Value)) * 100 的百分比。
我怎样才能得到这个?
我的评分为 5,因此每个用户都有一个评分,他们可以从 1 到 5 中进行选择,所以我需要一个公式来计算总和并考虑有多少用户评分并给我们一个结果最后从1到5
这样的方法可能有效,但我需要四舍五入到小数点后一位才能得到一个整数。
select sum(R_Value), ((count(*)/cast(sum(R_Value) as float)) * 10)
from R_Rating
where R_B_Id = 135
【问题讨论】:
预期结果是什么?我想您可能想乘乘以 5 并 除 乘以 100,但是对于粗略的描述并不清楚。 一个 INT 除以一个 INT 返回一个 INT ... 例如 Select 5/10 返回 0。但是 Select 5/10.0 返回 0.5000 更新了请看一下 【参考方案1】:要获得平均评分,您需要强制使用浮点代数。例如:
select 1.0 * sum(R_Value) / count(*)
from R_Rating
where R_B_Id = 135
然后,如果您的查询选择具有以下值的三行:1
、4
和 5
,则此查询将返回 3.33
星作为平均值。那就是:
= 1.0 * (1 + 4 + 5) / 3
= 1.0 * 10 / 3
= 10.0 / 3
= 3.33333333
【讨论】:
【参考方案2】:我建议这样写:
select sum(R_Value) ,
(500.0 / sum(R_Value))
from R_Rating
where R_B_Id = 135;
这避免了整数除法。
【讨论】:
以上是关于如何在 SQL Server 中使用 sum 进行计算的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server SUM IF 使用具有多个条件的窗口函数
SQL Server 中的 XQuery 对零值进行 SUM
如何在 SQL Server 中对 Bit 数据类型进行 PIVOT?