如何根据 Where 条件获取 Redshift 中的上述值?
Posted
技术标签:
【中文标题】如何根据 Where 条件获取 Redshift 中的上述值?【英文标题】:How to get the preceding values in Redshift based on Where condition? 【发布时间】:2021-03-17 21:30:45 【问题描述】:我有三个列,一个学生名、列_1、列_2。我想在第 2 列中存在 0 的地方打印前面的值。
我想要像下面这样的输出,我使用了滞后功能。可能我用错了。
【问题讨论】:
"preceding" 表示有排序。 SQL 表表示无序(多)集。没有排序。除非列指定了排序。此外,您想要做什么的逻辑也很不清楚。预期列中的数字来自哪里? 【参考方案1】:据我所知,您想要计算 0
值的数量,直到并包括每一行。如果这种解释是正确的,您将使用条件累积和:
select t.*,
sum( (column1 = 0)::int ) over (partition by student
order by <ordering column>
rows between unbounded preceding and current row
)
from t;
注意:这假设您有一个未包含在问题中的排序列。
【讨论】:
以上是关于如何根据 Where 条件获取 Redshift 中的上述值?的主要内容,如果未能解决你的问题,请参考以下文章
对 Redshift/Postgres 中的两个矛盾条件使用 WHERE EXISTS 语句?
如何为 Amazon redshift 数据库编写查询,使相关查询的 where 子句具有两个条件?