【发布时间】:2021-08-25 07:20:36
【问题描述】:
column1 column2 column3
aa 1 x
aa 2 x
aa 3 y
aa 4 y
bb 1 x
bb 2 y
bb 3 y
cc 1 x
cc 2 z
cc 3 z
然后我想要一个列 col4,当 col3='y' 被 col1 分区时,它给出 col2 的最小值。原始数据集无序
column1 column2 column3 column4
aa 1 x 3
aa 2 x 3
aa 3 y 3
aa 4 y 3
bb 1 x 2
bb 2 y 2
bb 3 y 2
cc 1 x NULL
cc 2 z NULL
cc 3 z NULL
我想在 column3 最初为每个 ID 具有值“y”时获取 column2 值。真正的桌子很复杂而且很大。我尝试使用least(case when...) with over partition by group by,但它会抛出错误,因为这里不需要“Over”。如果我使用 group by,我会收到许多其他分类列未分组的错误。它仅适用于应用于如下列的任何函数,但它没有给我所需的结果。
least(case when (lag( column3) over (partition by column1 order by column2))='y'
then column2 else NULL end ) as required_column_values from t
【问题讨论】:
-
你想要什么结果?我不明白你真正想要的是什么。
-
required_column_values 是我的“必需结果”,它实际上是根据 col3 值从 col2 派生的,它应该在 col1 上进行分区
-
我已经把例子讲得更清楚了
标签: mysql sql amazon-athena presto