减去然后除去SQL而不进行舍入

时间:2017-06-26 18:14:41

标签: sql sql-server sql-server-2008

想要从另一列中减去一列然后除以第一列并显示为百分比 尝试这个

Select SUM(GoodReadCount)As 'GoodReads'
  ,'GoodRead%' = ((SUM (GoodReadCount)-SUM (NoReadCount))/SUM (GoodReadCount))
  ,SUM(NoReadCount)AS 'NoReads'
  ,SUM(NoInformationCount)AS'NoInfo'
  ,SUM(LabelConflictCount)AS'Label'
  ,SUM(TrackingErrorRecircCount)AS'TrackError'
  ,SUM(ConfirmCount)as'confirmed'
  ,SUM(RecircCount)as 'recirc'
FROM [DB].[DB].[dbo].[SorterStats]
WHERE RecordedPeriod Between '6/19/2017 01:00:00AM' and '6/23/2017 23:59:00PM'

获得此结果

GoodReads   GoodRead%   NoReads NoInfo  Label   TrackError  confirmed   recirc
21202              0    317     2       5170    8565        13007       12881

想看到这个结果

GoodReads   GoodRead%   NoReads NoInfo  Label   TrackError  confirmed   recirc
21202       98.5%       317     2       5170    8565          13007     12881

DATA TYPES INT INT

2 个答案:

答案 0 :(得分:4)

将减法放在parens中,以便在除法之前执行。

(A-B)/C

还将数据类型转换/转换为DECIMAL(4,2)以避免结果自动舍入。

答案 1 :(得分:3)

无论

Startup.Configure

 cast((SUM (GoodReadCount)-SUM (NoReadCount)) as decimal(8,2))*100/ cast(SUM (GoodReadCount)as decimal(4,2))

会做的伎俩。如果你划分它然后再投射它没有用,因为划分的数字是一个整数,当你施放它时,你只是在小数点后添加两个零