假設我有填充像這樣的表t
:如何在SQL中對行的有序子集進行聚合?
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排序,選擇每個連續組的最小和最大y的x和z。
注意這個查詢是不是我所需要的:
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解決方案是首選)
我想'B A 1 1'是不需要的行(下面的規格)。 –
很好,很抱歉! – Rubrick
您可以使用[分析函數](http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions004.htm) –