Select WHERE 子句中的最短日期

Select Minimum Date within WHERE Clause

从 PostgreSQL 的角度来看: 我有一个数据集,其中包含指标值、时间戳和一个标志,用于指示指标值是否属于基线或跟进期。

我想 select 基线期的所有行和后续期的第一行。我无法在 WHERE 子句中使用 MIN(date),而且并不是说在所有情况下跟进期总是在同一日期开始。

有什么方法可以让我做类似WHERE type = 'baseline' OR (type = 'fol' AND date <= MIN(date))的事情吗?

从超集的角度来看: 我正在使用注释层来突出显示表示基线周期的指示线部分。然后我用不同的颜色突出显示后续阶段。我需要确保突出显示是连续的(现在基线最后日期和后续最后日期之间的线段未突出显示)。因此,我需要对基线下的图表应用过滤器突出显示注释层,该层 returns 基线期和第一个后续日期的数据。

您不能在 WERE 子句中使用聚合函数。使用子查询代替

... WHERE type = 'baseline' OR (type = 'fol' AND date <= (SELECT MIN(data) FROM ... WHERE type = 'baseline') )

据我所知,有几种方法可以做到这一点:

1) 使用 UNION 有两个单独的查询

select <Query> where type = 'baseline'
UNION ALL
select <Query> where type = 'fol' order by date limit 1

2) 使用您编写的 where 子句,但在子查询中计算日期,如@Kushal Arya answer

3) 使用window-函数ROW_NUMBER

select
    <Query>,
    ROW_NUMBER() over (partition by type
                       order by date) as row_num
where
  type = 'baseline' OR
  (type = 'fol' AND row_num = 1)

我没有运行这些查询