Как определить распределение значения столбца в Oracle? - PullRequest
4 голосов
/ 17 января 2012

Например, если у меня есть столбец, представляющий флаг 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

Кто-нибудь может указать мне правильное направление?

Ответы [ 2 ]

5 голосов
/ 17 января 2012

Попробуйте аналитическую функцию следующим образом:

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 голос
/ 17 января 2012

Возможно, это не самый лучший способ, но я думаю, это должно сработать.

select count(*) * 100 / (select count(*) from widgets), enabled_flag
from widgets
group by enabled_flag
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...