有没有办法获取earch字段的百分比

时间:2019-12-23 07:01:58

标签: sql oracle-apex oracle-apex-5.1

每种状态我都需要百分比

Select NAME, STATUS, Count(*) From DATA 

group by NAME, STATUS
order by NAME

Result is here

I need percentage for each of the statues

4 个答案:

答案 0 :(得分:1)

我认为您在百分比计算中使用了以下公式, count(第一个行)* 100 /所有计数行的总和,即448 * 100/1560 = 28.71。 所以,亲爱的,我请您提出所有问题。

尝试以下查询,并享受其中。

 Select NAME, STATUS, Count(*),
     Count(*)*100/(select sum(CT) from (select NAME, STATUS, Count(*) CT from data group by NAME, STATUS))PERCENTAGE
     From DATA 
       group by NAME, STATUS
        order by NAME

答案 1 :(得分:1)

您需要创建无状态计数的子查询,然后需要明智地获取百分比的用户,您可以在下面进行尝试:

Select f1.NAME, f1.STATUS, Count(*),CONCAT((Count(*)*100)/(select Count(*) from data f2 where NAME=f1.Name group by f2.NAME),'%') From DATA f1

group by f1.NAME, f1.STATUS
order by f1.NAME

或者,如果您有用户名,那么查询效果更好,结果更完美

Select f1.NAME, f1.STATUS, Count(*),CONCAT((Count(*)*100)/(select Count(*) from data f2 where UserId=f1.UserId group by f2.UserId),'%') From DATA f1

group by f1.UserId,f1.NAME, f1.STATUS
order by f1.NAME

答案 2 :(得分:0)

以下是获取百分比的方法。首先是获取总计count(),然后乘以1.0,以将结果转换为decimal格式。

select name, status, count(1) 
    ,  ((count(1) * 1.0)
        /(select count(1) from data)) * 100 as percentage
from data
group by name, status
order by name

答案 3 :(得分:0)

选中此项,使用SUM计算总数,然后使用分组依据对名称进行分组

SELECT name, status, COUNT(status)/(
    SELECT COUNT(status) 
    FROM data
)*100
FROM percentage
GROUP BY name, status
ORDER BY name