SQLite检查没有循环的类别

Sqlite checking for cateory without loop

假设我 table 是这样的:

id ; cat ; val_2 ; val_3
1  ;  1    ;  40   ;  80
2  ;  1    ;  60   ;  90
3  ;  2    ;  10   ;  120
4  ;  2    ;  30   ;  100
5  ;  3    ;  20   ;  40
5  ;  3    ;  40   ;  70
5  ;  3    ;  50   ;  60

现在,我需要对每个类别的猫进行操作,但不像 sum 和 group by 那样,我需要检查 val_2 和 val_2 之间的每一行 val_3 ] 在下一行。所以:

(LAG(val_2) OVER() BETWEEN val_2 AND val_3) OR
(LEAD(val_2) OVER() BETWEEN val_2 AND val_3)

但是每个类别分别怎么做呢?

您可以添加一个 partition by 子句:

(LAG(val_2) OVER(PARTITION BY cat ORDER BY id) BETWEEN val_2 AND val_3) OR
(LEAD(val_2) OVER(PARTITION BY cat ORDER BY id) BETWEEN val_2 AND val_3)