Sql 特定值的计数序列
我有一张雪花桌,像这样:Sql 特定值的计数序列,sql,snowflake-cloud-data-platform,Sql,Snowflake Cloud Data Platform,我有一张雪花桌,像这样: date_col | artc | locl | flag d1 | a1 | l1 | 0 d2 | a1 | l1 | 1 d3 | a1 | l1 | 1 d4 | a1 | l1 | 0 d5 | a1 | l1 | 0 d6 | a1 | l1 | 1 d7 | a1 | l1 | 0 d8 | a1 | l1 | 1
date_col | artc | locl | flag
d1 | a1 | l1 | 0
d2 | a1 | l1 | 1
d3 | a1 | l1 | 1
d4 | a1 | l1 | 0
d5 | a1 | l1 | 0
d6 | a1 | l1 | 1
d7 | a1 | l1 | 0
d8 | a1 | l1 | 1
d9 | a1 | l1 | 1
d10 | a1 | l1 | 1
d1 | a1 | l2 | 0
d2 | a1 | l2 | 1
d3 | a1 | l2 | 1
d4 | a1 | l2 | 1
d5 | a1 | l2 | 1
d6 | a1 | l2 | 1
d7 | a1 | l2 | 0
d8 | a1 | l2 | 1
d9 | a1 | l2 | 1
d10 | a1 | l2 | 1
我想按artc和locl计算列“flag”组中1的顺序,按日期排序
期望输出为:
flag
2
1
3
5
3
我尝试过这样的事情:
select
count(*) Over(PARTITION BY art, locl, flag
ORDER BY date_col rows
unbounded preceding) as flag
from table
where flag=1
但这并不意味着新的团队变革。
谢谢你的帮助 通过计算“1”之前的“0”个数,为每组分配一个分组。然后过滤和聚合:
select count(*), min(date_col), max(date_col)
from (select t.*,
sum(case when flag = 0 then 1 else 0 end) over (order by date_col) as grp
from t
) t
where flag = 1
group by grp
order by min(date)
伟大的它工作得很好。谢谢戈登!