Считать строки несколькими столбцами
Я хочу посчитать строки на основе нескольких столбцов и с определенным значением в столбце. Пожалуйста, проверьте прилагаемую таблицу.
Посчитайте значение:
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