【问题标题】:How do you calculate using sum in SQL Server如何在 SQL Server 中使用 sum 进行计算
【发布时间】: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
  • 更新了请看一下

标签: sql sql-server


【解决方案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;
    

    这避免了整数除法。

    【讨论】:

      猜你喜欢
      • 2017-03-06
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多