Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何获取连续的id组_Sql_Postgresql_Count_Window Functions_Gaps And Islands - Fatal编程技术网

Sql 如何获取连续的id组

Sql 如何获取连续的id组,sql,postgresql,count,window-functions,gaps-and-islands,Sql,Postgresql,Count,Window Functions,Gaps And Islands,我想按组增加一个id,对于只有2个值的属性的每个变体。像这样: 1 banana 2 banana 3 egg 4 egg 5 banana 6 egg 7 egg 需要结果 id food grp 1 banana 1 2 banana 1 3 egg 2 4 egg 2 5 banana 3 6 egg 4 7 egg 4 我尝试使用窗口函数进行密集排列,但

我想按组增加一个id,对于只有2个值的属性的每个变体。像这样:

1   banana
2   banana
3   egg
4   egg
5   banana
6   egg
7   egg
需要结果

id   food    grp
1   banana    1
2   banana    1
3   egg       2
4   egg       2
5   banana    3
6   egg       4
7   egg       4

我尝试使用窗口函数进行密集排列,但在grp列中我只给出了1或2个

您可以使用窗口函数来解决这个间隙和孤岛问题。Her是一种使用滞后和窗口计数的方法:

选择id、食物、计数*过滤器食物与id grp过量订购的食物不同之处 从…起 选择t.*,lagfood按id过量订购lag_food 来自MyT表 T 逻辑是将每种食物与前一行的值进行比较,并计算其变化的次数

:


伟大的我从未使用过过滤器:[ id | food | grp -: | :----- | --: 1 | banana | 1 2 | banana | 1 3 | egg | 2 4 | egg | 2 5 | banana | 3 6 | egg | 4 7 | egg | 4