【发布时间】:2020-06-18 23:41:37
【问题描述】:
我需要为 A 列的每一行选择具有 B 列最小值的行,但它应该与迄今为止为 A 列选择的其他值不同。所以 A 的顺序很重要。此外,如果 B 已用完且没有剩余,则 A 的后面值应为 NULL 或不出现在结果中。
A 和 B 都是数字(或时间戳)。 示例:
A | B |
----+---+
1 | 3 |
1 | 5 |
1 | 6 |
2 | 3 |
2 | 5 |
9 | 3 |
9 | 5 |
所以想要的结果是:
A | B |
----+---+
1 | 3 |
2 | 5 |
select A, min(B) group by A 显然不起作用,因为我不希望 B 被重复。 Distinct 也不起作用,因为行已经不同。我在任何地方都找不到类似的问题。
我正在使用的实际数据是 redshift 上的时间序列数据库,因此 A 和 B 是时间戳。特别欢迎 CTE。
【问题讨论】:
-
那么
1, 6也是不同的。 -
@zealous 是,但 6 不是分配给 1 的最小值。
-
@zealous 我的错。我刚刚更正了我的问题。
-
a == 2 的最小值应该是三个吗?
-
用您正在使用的数据库标记您的问题。
标签: sql amazon-redshift