Я имею дело с некоторыми данными журнала со статусом воспроизведения, которые включают play
и end
. Во время игры клиент будет сообщать play
несколько раз, но когда появляется end
, это означает, что игра заканчивается, например,
user_id status timestamp
a play xxx
a play xxx
a play xxx
a end xxx
b play xxx
b end xxx
c play xxx
c play xxx
c end xxx
a play xxx
a play xxx
a end xxx
a play xxx
a end xxx
Теперь я могу использовать row_number()
для расчета количества user_id
с играми со статусом более 2 play
, например:
# I realize this is a wrong query...
select count(distinct user_id) as cnt_uid
(select
user_id,status,timestamp,
row_number() over (partition by user_id, status, order by timestamp) as rn
from tableA) a
where rn>=2
Но если мне нужно подсчитать количество игр со статусом более 2 play
(например: user A
имеет 2 игры с более чем 2 play
статусом и user C
имеет 1), как это сделать? Любая помощь приветствуется.
* PS: Ожидаемый результат - это просто количество игр со статусом более 2 play
, а для данных, приведенных выше, результат 3
.