例如,如果我有一个代表Y
或N
标记的列,则Y
的百分比是多少,N
的百分比是多少?我知道我可以编写一个查询来查找这些数字,然后自己计算百分比,但我认为应该直接在PL / SQL中使用NTILE
等分析函数进行此操作。
SELECT COUNT(1), enabled_flag
FROM widgets
GROUP BY enabled_flag;
给我:
COUNT(1) | enabled_flag
123124 | Y
234234 | N
我需要:
enabled_flag | percentage
Y | 34
N | 56
有人能指出我正确的方向吗?
答案 0 :(得分:5)
尝试分析功能:
SELECT round(100*COUNT(1)/sum(count(1)) over (),0), enabled_flag
FROM widgets
GROUP BY enabled_flag;
编辑...您还可以使用RATIO_TO_REPORT功能,这可能使其看起来更清晰或更容易维护:
SELECT round(100*RATIO_TO_REPORT(count(1)) over (),0), enabled_flag
FROM widgets
GROUP BY enabled_flag;
答案 1 :(得分:1)
这可能不是最好的方式,但我想它应该有效。
select count(*) * 100 / (select count(*) from widgets), enabled_flag
from widgets
group by enabled_flag