我有以下資料集:
| 一種 | 乙 | C |
|---|---|---|
| 1 | 約翰 | 2018-08-14 |
| 1 | 約翰 | 2018-08-20 |
| 1 | 約翰 | 2018-09-03 |
| 2 | 約翰 | 2018-11-13 |
| 2 | 約翰 | 2018-12-11 |
| 2 | 約翰 | 2018-12-12 |
| 1 | 約翰 | 2020-01-20 |
| 1 | 約翰 | 2020-01-21 |
| 3 | 約翰 | 2021-03-02 |
| 3 | 約翰 | 2021-03-03 |
| 1 | 約翰 | 2020-05-10 |
| 1 | 約翰 | 2020-05-12 |
我想得到以下結果:
| 一種 | 乙 | C |
|---|---|---|
| 1 | 約翰 | 2018-08-14 |
| 2 | 約翰 | 2018-11-13 |
| 1 | 約翰 | 2020-01-20 |
| 3 | 約翰 | 2021-03-02 |
| 1 | 約翰 | 2020-05-10 |
如果我按 A、B 分組,第一行和第三行只是連接,這是連貫的。我如何創建另一個列以仍然使用 group by 并獲得我想要的結果。
如果你有其他想法而不是我的,請解釋一下!
我嘗試使用一些 first、last、rank、dense_rank 沒有成功。
uj5u.com熱心網友回復:
使用滯后()。看起來 B 是資料中 A 的函式。所以檢查滯后(A)就足夠了。
select A,B,C
from (
select *, case when lag(A) over(order by C) = A then 0 else 1 end startFlag
from mytable
) t
where startFlag = 1
order by C
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/316294.html
標籤:sql PostgreSQL 通过...分组 分析
