如何在sql中计算百分比?

时间:2015-01-16 10:37:11

标签: sql

我必须根据计算来计算百分比。下面给出了一个样本数据表。

TeamName   Count1   Count0
--------   -----    ------
Team1        1        2
Team2        3        0
Team3        1        1

我想根据greatest value中的Count1显示百分比。 The expecting output sample is given below:

期待看跌:

TeamName   Count1   Count0  Percentage1  Percentage0
--------   -----    ------  -----------  -----------
Team1        1        2        33.33%         66.6%
Team2        3        0        100%           0%
Team3        1        1        33.33%         33.33%  

帮我找到合适的解决方案。谢谢。

5 个答案:

答案 0 :(得分:4)

使用Max()over ()技巧找到所有行的最大值。

select TeamName,   
Count1,  
Count0,
(count1*100.0)/nullif(Max(Count1) over(),0) Percentage1,
(count0*100.0)/nullif(max(Count1) over(),0) Percentage2
from yourtable

或使用subquery查找Max并进行数学

SELECT 
  TeamName, 
  Count1, 
  Count0, 
  (Count1*100.0) / nullif((SELECT max(Count1) FROM yourTable),0) Percentage1, 
  (Count0*100.0) / nullif((SELECT max(Count1) FROM yourTable),0) Percentage2
FROM yourTable

答案 1 :(得分:1)

SELECT 
  TeamName, 
  Count1, 
  Count0, 
  Count1 / (SELECT MAX(Count1) FROM Tbl), 
  Count0 / (SELECT MAX(Count1) FROM Tbl) 
FROM Tbl

计数1中的零值是什么。如果您描述MAX(计数1)为零时要执行的操作,我可以改进答案。

答案 2 :(得分:1)

也许这会对你有所帮助:

SELECT a.TeamName,
       a.Count1,
       a.Count0,
       a.Count1 / b.maxCount * 100
       a.Count0 / b.maxCount * 100
  FROM yourTable a
  JOIN(SELECT MAX(Count1) 
         FROM yourTable
      ) b
    ON 1 = 1;

答案 3 :(得分:1)

试试这个。

create table tbl(teamname nvarchar(100), count1  int, count2  int)

insert into tbl values
('T1',1,2), ('T2',3,0), ('T3',1,1)

select 
    teamname,
    count1,    
    count2,
    count1 * 100 /(count1 + count2) Percenta1,
    count2 * 100 /(count1 + count2) Percenta2   

From tbl

drop table tbl

答案 4 :(得分:-1)

看着你的问题,似乎价值为1则为33.33%,2为66.6%&对于3来说它是100%。在这种情况下,你可以尝试以下:

SELECT COUNT1, COUNT0,
DECODE(COUNT1,1,'33.33%',2,'66.6%',3,'100%') PERCENTAGE1,
DECODE(COUNT0,1,'33.33%',2,'66.6%',3,'100%') PERCENTAGE0
FROM tablename;

如果不是这样,那么请解释为什么你的表中的row3,percentage1和0都是33.33%