Анализ Парето в Oracle SQL без итерационных процедур и жесткого кодирования допустимых значений - PullRequest
1 голос
/ 12 марта 2012

Скажем, у вас есть таблица T (C1, C2, C3) и есть набор допустимых значений для C1, V = {v1, v2, v3 ...}. Теперь, не прибегая к курсорам, т. Е. Полностью оставаясь в области логики на основе множеств, вы хотите увидеть, какая пропорция строк относится к типу v1, какая пропорция строк относится к типу v2 и какая пропорция строк относится к типу v3 и т. д. - без необходимости писать регистр для каждого действительного значения. Таким образом, для каждого отдельного действительного значения в C1 отобразите в наборе результатов отсортированную частоту строк типа V и соответствующее значение (т. Е. V1, v2, v3 ...). Что такое запрос в PL / SQL?

РЕДАКТИРОВАТЬ: счет прост:

select count(*) count, c1 from T group by c1 order by count

а что если вы хотите показать пропорции частоты?

1 Ответ

2 голосов
/ 12 марта 2012

Если я вас понимаю, звучит так, как будто вы просто хотите

SELECT c1, count(*) cnt
  FROM t
 GROUP BY c1
 ORDER BY count(*) desc

Это вернет отсортированную частоту каждого значения. Если вы ищете коэффициенты, вы можете добавить аналитическую функцию RATIO_TO_REPORT

SELECT c1, 
       cnt,
       ratio_to_report(cnt) over () fraction
  FROM (
    SELECT c1, count(*) cnt
      FROM t
     GROUP BY c1 )
 ORDER BY cnt desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...