這是一個gaps-and-islands類型的問題,因爲你不想只是B
組,您只需要通過連續B
相對於A
組。
rextester:http://rextester.com/UEE36579
select
minA = min(a)
, maxA = max(a)
, B
, rnk = dense_rank() over (order by min(a))
from (select a, b
, rn_a = row_number() over (order by a)
, rn_b = row_number() over (partition by b order by a)
from t) as cte
group by B, rn_b - rn_a
order by minA, b
回報:
+------+------+------+-----+
| minA | maxA | B | rnk |
+------+------+------+-----+
| 1 | 1 | 1.00 | 1 |
| 2 | 3 | 1.10 | 2 |
| 4 | 4 | 1.30 | 3 |
| 5 | 6 | 1.40 | 4 |
| 7 | 7 | 1.45 | 5 |
| 8 | 10 | 1.40 | 6 |
+------+------+------+-----+
請出示預期的輸出。 –
A B 1 1.0 2-3 1.1 4 1.3 5-6 1.4 7 1.45 8-10 1.4 – antbithia