我必须根据计算来计算百分比。下面给出了一个样本数据表。
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%
帮我找到合适的解决方案。谢谢。
答案 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%