Количество строк, совпадающих со строкой в ​​Sybase - PullRequest
1 голос
/ 04 марта 2020

У меня есть таблица, которая содержит три столбца, первый - member_id, второй - индекс месяцев, а третий - категориальная переменная с тремя различными значениями.

Мои данные выглядят следующим образом:

member_id   refill_month    MEMBER_TYPE
454723            0          RETAINED
454723            1          RETAINED
454723            2          RETAINED
454723            4           LAGGER
454723            7          RETAINED
454723            9          RETAINED
454723            11           LOST
456279            0          RETAINED
456279            2            LOST
457100            1          RETAINED
457100            2          RETAINED
457100            3          RETAINED
457100            4          RETAINED
457100            5          RETAINED
457100            6          RETAINED
457100            7          RETAINED
457100            8          RETAINED
457100            9           LAGGER
457100            12           LOST

Я хотел бы получить счет member_id, где MEMBER_TYPE = 'RETAINED' для каждого refill_month, деленный на счетчик всех member_id за этот месяц

Это то, что я пытаюсь получить, но я не верю, что возможно включить предложение where в оператор select в Sybase.

SELECT 
    refill_month,
    count(member_id where MEMBER_TYPE=’RETAINED’)/count(member_id) AS retention

Если кто-то может помочь, я был бы очень признателен .

1 Ответ

1 голос
/ 04 марта 2020

Вы можете сделать условную агрегацию. avg() пригодится для вычисления соотношения строк, соответствующих заданным критериям:

select 
    refill_month,
    avg(case when member_type = 'RETAINED' then 1.0 else 0 end) retention
from mytable
group by refill_month
order by refill_month
...