0

我有一个这样的查询:

Select Customer,JobType,sum(SThours),
sum(OThours),SortMonth,
str((sum(OThours)/sum(SThours)),5,2)AS Ratios 
from #data
group by Customer,JobType,SortMonth


Sum (SThours): 688
sum(OThours): 618

比率应该是 618/688=0.90 但我的结果是 1.00

我是 SQL 新手,需要帮助。谢谢。

4

3 回答 3

3

尝试将除法的一侧或另一侧转换为浮点数 - 强制浮点而不是整数除法。

SELECT
  Customer,
  JobType,
  sum(SThours),
  sum(OThours),
  SortMonth,
  str((CAST(sum(OThours) AS FLOAT)/sum(SThours)),5,2) AS Ratios
FROM
  #data
GROUP BY
  Customer,
  JobType,
  SortMonth
于 2013-02-21T13:58:07.243 回答
1

您的问题是您正在执行整数除法,这将始终导致返回整数值。在除以之前,您应该将总和转换为浮点数值(十进制应该可以)。

于 2013-02-21T13:58:54.553 回答
1

尝试将数字转换为十进制

SELECT
  Customer,
  JobType,
  sum(SThours),
  sum(OThours),
  SortMonth,
  str((CAST(sum(OThours) AS DECIMAL)/sum(SThours) ),5,2) AS Ratios
FROM
   #data
GROUP BY
  Customer,  JobType,  SortMonth

试试这个示例小提琴

这是显示获取十进制值的简单示例

于 2013-02-21T14:00:08.340 回答