如何找到三个不同值的百分比?

时间:2015-05-14 09:45:10

标签: sql sql-server tsql

在我的表格中我有三列draftlivecompleted

草稿的值为18,实时为33,已完成的11

如何计算SQL中每个的百分比

我试过这样的事情,但不认为这是正确的计算

以下是我尝试过的...但我想当我尝试计算三个百分比的总和时,他们不会覆盖完整的100

UPDATE @finalTable
SET Draft_Percentage =  (CASE
when Draft_Total > 0 then ((Draft_Total * 100) / (select sum(t1.Draft_Total) + sum(t1.Live_Total) + sum(t1.Completed_Total)  from @finalTable as t1))
else 0
end)

UPDATE @finalTable
SET Live_Percentage = (case
WHEN Live_Total > 0 THEN ((Live_Total * 100) / (select sum(t1.Draft_Total) + sum(t1.Live_Total) + sum(t1.Completed_Total) from @finalTable as t1))
else 0
end)

UPDATE @finalTable
SET Completed_Percentage = (CASE
WHEN Completed_Total > 0 THEN ((Completed_Total * 100) / (select sum(t1.Draft_Total) + sum(t1.Live_Total) + sum(t1.Completed_Total) from @finalTable as t1))
else 0
end)

请建议

2 个答案:

答案 0 :(得分:1)

所以这基本上是一个数学问题而不是编程问题。解决这个问题的一种方法是将所有东西乘以100和总和之间的比例(在你的情况下是62):
(18 *(100/62))+(33 *(100/62))+(11 *(100/62))= 62 *(100/62)(' s显然等于100)

答案 1 :(得分:0)

我的理解是: -

SELECT (18*100)/(18+33+11) AS 'Draft'
     , (33*100)/(18+33+11) AS 'Live'
     , (11*100)/(18+33+11) AS 'Completed'

结果

Draft       Live    Completed
29          53      17