SQL - 达到最小值/阈值后选择行
Posted
技术标签:
【中文标题】SQL - 达到最小值/阈值后选择行【英文标题】:SQL - Select rows after reaching minimum value/threshold 【发布时间】:2017-11-29 23:01:58 【问题描述】:使用 Sql Server Mgmt Studio。我的数据集如下。
ID Days Value Threshold
A 1 10 30
A 2 20 30
A 3 34 30
A 4 25 30
A 5 20 30
B 1 5 15
B 2 10 15
B 3 12 15
B 4 17 15
B 5 20 15
我想运行一个查询,以便只为每个 ID 选择达到阈值之后的行。另外,我想从选择行的 1 开始创建一个新的天列。上述数据集的预期输出将如下所示
ID Days Value Threshold NewDayColumn
A 3 34 30 1
A 4 25 30 2
A 5 20 30 3
B 4 17 15 1
B 5 20 15 2
如果数据低于后面行的阈值并不重要,我想在阈值超过 1 时取第一行并继续计算 ID 的行数。 谢谢!
【问题讨论】:
【参考方案1】:您可以为此使用窗口函数。这是一种方法:
select t.*, row_number() over (partition by id order by days) as newDayColumn
from (select t.*,
min(case when value > threshold then days end) over (partition by id) as threshold_days
from t
) t
where days >= threshold_days;
【讨论】:
谢谢,这部分有帮助。 :) 我想我可以在这之后找出行号。 @NeilAk。 . .我在阅读问题时错过了row_number()
部分(更有趣的部分是选择行)。但我确实把它放进去了。以上是关于SQL - 达到最小值/阈值后选择行的主要内容,如果未能解决你的问题,请参考以下文章