lag
का प्रयोग करें पिछली पंक्ति पर मान प्राप्त करने और उसके बाद शर्तों के आधार पर गिनने के लिए।
select count(*)
from (select action_date,action,lag(action) over(order by action_date) as prev_action
from t
) t
where (action<>prev_action and action=1) or (action=1 and prev_action is null)
या इसे
. के रूप में सरल बनाया जा सकता हैselect
count(case when lag(action) over(order by action_date) is null then and action = 1 then 1
when lag(action) over(order by action_date) is not null and lag(action) over(order by action_date) <> action and action = 1 then 1
end) as cnt
from t