假设我有一张t
这样填充的表格:
x y z
- - -
A 1 A
A 4 A
A 6 B
A 7 A
B 1 A
B 2 A
基本上,列 x 和 z 是随机字母和 y 随机数。
我想按如下方式聚合行:
x z min(y) max(y)
- - ------ ------
A A 1 4
A B 6 6
A A 7 7
B A 1 2
换句话说:假设行按 x、y 和 z 排序,请为每个连续的 x 和 z 组选择最小和最大 y。
请注意,此查询不是我需要的:
select x, z, min(y), max(y)
from t
group by x, z
因为这会导致以下不需要的结果:
x z min(y) max(y)
- - ------ ------
A A 1 7
A B 6 6
B A 1 2
所以问题是:有没有办法在 SQL 中表达我想要的东西?
(如果解决方案依赖于 SQL 方言:Oracle 解决方案将是首选。)