我有一個company有兩列的表。
| ID | 價值 |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 2 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 1 |
我必須從表中選擇大于其領先和滯后的記錄。我嘗試在下表中實作領先和滯后功能,如下所示。
select ID,
lead(ID, 1) over (order by ID) as nextVal,
lag(ID, 1) over (order by ID) as preVal
from company;
我不明白的是如何將我的當前行與lead&進行比較lag,然后如果它大于它的lead&則只選擇當前行lag
我正在尋找這個記錄:
| ID |
|---|
| 6 |
不能考慮第一行和最后一行,因為第一條記錄沒有前一行,最后一條記錄沒有下一行。誰能讓我知道我怎樣才能做到這一點?
uj5u.com熱心網友回復:
嘗試這個:
with u as
(select ID, VALUE,
lead(VALUE) over (order by ID) as nextVal,
lag(VALUE) over (order by ID) as preVal
from company)
select ID from u
where VALUE > nextVal and VALUE > preVal;
小提琴
不lead(VALUE)一樣lead(ID),對于lag。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/438122.html
