当前位置: 首页 > 知识库问答 >
问题:

SQL查询-计算值高于X的连续行数

颛孙高义
2023-03-14

我被困在一个问题上,希望得到一些指导。我们希望生成一个报告,计算产品的连续日期(从用户提供的日期向后看)。数据集如下:

Product, InventoryDate, InventoryQuantity
A, 3/1/2021, 123
B, 3/1/2021, 98
C, 3/1/2021, 101
A, 2/22/2021, 115
B, 2/22/2021, 99
C, 2/22/2021, 105
A, 2/15/2021, 150
B, 2/15/2021, 105
C, 2/15/2021, 50

因此,我们想得出一份报告,该报告在2021年3月2日提供的日期如下所示:

Product, CurrentInventory, PreviousWeeksCountAbove100
A,123,2
B,98,0
C,101,1

尽管我正在努力编写查询,但我甚至不知道该怎么称呼它,因为我需要一个特定阈值上的连续值计数。我可以计算阈值以上的值,但不确定如何添加“连续数周”逻辑。

共有1个答案

子车高歌
2023-03-14

您可以使用窗口函数。根据行数分配一个组,该行数的值从末尾算起低于X。然后过滤和聚合:

select product,
       sum(case when grp = 0 and val > 100 then 1 else 0 end) as consecutive_weeks
from (select t.*,
             sum(case when val <= 100 then 1 else 0 end) over (partition by product order by inventorydate desc) as grp
      from t
      where inventorydate <= ?
     ) t
group by product;
 类似资料:
  • 问题内容: 我希望为每个人计算连续的一天咒语。 我的表: 这是我目前拥有的代码: 产生结果: 在我正在寻找这样的结果集的地方: 我需要计算连续1天以上的连续天数。然后将其作为某人拥有多少个连续咒语的总和。例如,弗雷德在这段时间内连续2次生病。如果某人有星期五和星期一休息,我也需要此内容,这应该算作一个连续的咒语。 我对如何到达那里有些迷失。任何帮助将不胜感激。 请参阅:http ://sqlfid

  • 问题内容: 我有一个表,其中有两列开始时间和结束时间。我能够计算每一行的持续时间,但我也想获得总持续时间。这该怎么做。 谢谢 问题答案: 您的列的数据类型为TIMESTAMP,如下所示: 从一个时间戳减去另一个时间戳会导致一个INTERVAL数据类型: 并且不能对INTERVAL数据类型求和。这是一个令人讨厌的限制: 为了规避此限制,您可以使用秒数进行转换和计算,如下所示: 然后它们是可以累加的普

  • 我需要找到我的数据连续几天达到阈值的位置。我正在寻找超过阈值的4个连续观察值。我想返回符合这些标准的系列的第一个观察值的位置。 下面是一个数据集示例: 我想要平均符合标准的日期(平均 在这种情况下,我可以将第一种情况下的< code>TRUE作为答案,但如果第二种、第三种或第四种情况不是< code>TRUE,这将不起作用 我需要条件为的第一个日期: 以及该系列中第一个观察的位置: 我已经找到了相

  • 问题内容: 在SQL中按月将一列中的1-12连接到一堆计数的好方法是什么?…在​​SQL中 最终会像 编辑-基本上是一种获取我的月份列表/表格/任何内容的巧妙方法 问题答案: 许多方法…在上一份工作中对许多应用程序来说对我来说效果很好的一种方法是建立时间表。 然后,您可以将其日期字段放在startstamp和endstamp之间的timeframes表中进行联接。 这样可以很容易地拉出某个时间段或

  • 我有数据,我想应用滚动函数来检测哪个点的值大于特定阈值。 我想要的是找到下一个2个值高于某个阈值(例如30)的行。这将产生以下结果: 我有一个大的数据集(几百万行),所以我试图找到一个有效的解决方案。也许使用?由reprex包(v0.2.1)在2019-02-26创建

  • 问题内容: 我正在尝试计算股票收益数据中连续上升的天数- 因此,如果正数日为1,负数为0,则应该返回一个列表。 我来到了一个解决方案,它在代码行数方面很整洁,但是 非常 慢: 我猜想我遍历整个列表太多次了。是否有一种很好的Pythonic方式可以实现我想要的,而只需要遍历一次数据?我可以自己编写一个循环,但想知道是否有更好的方法。 谢谢! 问题答案: 为什么痴迷于超pythonic的做事方式?可读