Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
当条件为false时,如何在sql中将计数重置为0?_Sql - Fatal编程技术网

当条件为false时,如何在sql中将计数重置为0?

当条件为false时,如何在sql中将计数重置为0?,sql,Sql,我有一个sql表,其中包含图片中显示的以下数据 我需要在sql中创建一个查询,该查询为ticker计算每年的连续天数 close_值大于open_值,如果close_值小于open_值,则计数器必须重置为零,并且我必须在该瞬间保存计数器这是间隙和孤岛问题的一个示例。您可以使用行数()的差异: 这将返回所有这些时段。您尚未指定结果集的外观,但这应该非常接近。1)请使用适当的数据库标记。2) 不要发布数据的图片。作为文本发布。否则,读者很难尝试使用这些数据。好吧,还有?你试过什么?您发现了哪些具体

我有一个sql表,其中包含图片中显示的以下数据

我需要在sql中创建一个查询,该查询为ticker计算每年的连续天数
close_值大于open_值,如果close_值小于open_值,则计数器必须重置为零,并且我必须在该瞬间保存计数器这是间隙和孤岛问题的一个示例。您可以使用
行数()的差异


这将返回所有这些时段。您尚未指定结果集的外观,但这应该非常接近。

1)请使用适当的数据库标记。2) 不要发布数据的图片。作为文本发布。否则,读者很难尝试使用这些数据。好吧,还有?你试过什么?您发现了哪些具体问题?在第二行和第七行,关闭值小于打开值。请解释为什么计数没有设置为0?让我们可以方便地为您提供帮助:。@MatteoDeSantis请分享您想要的输出。我举一个例子,如果2013年AHH股票代码的收盘价大于开盘价的连续天数为5天,但2018年我有10天,那么我必须报告10天和2018年
select ticker, min(date), max(date), min(open_value), max(close_value),
       count(*) as num_rows
from (select t.*,
             row_number() over (partition by ticker order by date) as seqnum,
             row_number() over (partition by ticker, (case when close_value > open_value then 1 else 2 end) order by date) as seqnum_2
      from t
     ) t
where close_value > open_value
group by ticker, (seqnum - seqnum_2);