Считать строки несколькими столбцами

Я хочу посчитать строки на основе нескольких столбцов и с определенным значением в столбце. Пожалуйста, проверьте прилагаемую таблицу.

Посчитайте значение:

ID Date Action = 'C'

Я старался

COUNT(*) OVER (PARTITION BY ID, Date, Action = 'C') AS Count, но это не сработало. Кто-нибудь из вас знает, как рассчитать это поле?

Спасибо.

ht tps://stackru.com/images/e2272309af66dcd8710730705dbf616de1c9c4c6.png

3 ответа

Решение

Я думаю, что вы хотите:

SELECT . . .,
       (CASE WHEN Action = 'C'
             THEN COUNT(*) OVER (PARTITION BY ID, Date, Action)
        END) as c_count

Это помещает счет в ряды с Action = 'C', Если вы хотите подсчитать во всех строках, то:

SELECT . . .,
       COUNT(CASE WHEN Action = 'C' THEN 1 ELSE 0 END) OVER (PARTITION BY ID, Date) as c_count

Я думаю, что вы хотите:

select t.*,
       (select count(*)
        from table t1
        where t1.date = t.date and t1.id = t.id and t1.action = 'C'
       )
from table t;

Это то, что вы хотите сделать?

select 
     ID, 
     Date, 
     Action, 
     case Action 
         when 'C' then COUNT(*) OVER (PARTITION BY ID, Date)
         else null
     end as count
from your_table
Другие вопросы по тегам