Как суммировать совокупные значения и получать проценты? - PullRequest
0 голосов
/ 05 июня 2019
SELECT count (rx), class_cd
FROM RX 
GROUP BY 2

Результаты:

rx    class_cd
  406 C3
  430 C5
  620 OT
  773 C4
 1761 C2
13983 RX

Есть ли способ суммировать C2-C5 и Rx и OT?

В конечном итоге я хотел бы получить процент C2-C5 / RX-OT.

Ответы [ 2 ]

1 голос
/ 05 июня 2019

Вы можете попробовать агрегировать по выражению CASE, которое группирует группы, как вы хотите:

SELECT
    CASE WHEN class_cd REGEXP '^C[2-5]$' THEN 'C2-C5',
         WHEN class_cd IN ('RX', 'OT') THEN 'RX-OT',
         ELSE class_cd END AS class_cd,
    COUNT(*) AS cnt
FROM RX
GROUP BY
    CASE WHEN class_cd REGEXP '^C[2-5]$' THEN 'C2-C5',
         WHEN class_cd IN ('RX', 'OT') THEN 'RX-OT',
         ELSE class_cd END;
1 голос
/ 05 июня 2019

Я думаю, вы хотите условное агрегирование:

select ( sum( case when class_cd in ('C2', 'C3', 'C4', 'C5') then rs end ) /
         sum( case when class_cd in ('RX', 'OT') then rs end )
       ) as ratio
from t;

EDIT:

Если вы хотите просто посчитать значения, то:

select ( sum( class_cd in ('C2', 'C3', 'C4', 'C5') ) /
         sum( class_cd in ('RX', 'OT') )
       ) as ratio
from t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...