Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 特定值的计数序列_Sql_Snowflake Cloud Data Platform - Fatal编程技术网

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)

伟大的它工作得很好。谢谢戈登!