[英]How to calculate percentage in 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%
帮助我找到适当的解决方案。 谢谢。
使用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
SELECT
TeamName,
Count1,
Count0,
Count1 / (SELECT MAX(Count1) FROM Tbl),
Count0 / (SELECT MAX(Count1) FROM Tbl)
FROM Tbl
Count1中的零值为零。 如果您描述了当MAX(Count1)为零时该怎么办,我可以改善答案。
也许这会帮助您:
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;
尝试这个。
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
查看您的问题,似乎值是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的百分比1和0均为33.33%
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.