Sql 基于以前的行按条件创建和索引计数行
我试图通过分组构造计算索引,该分组构造必须引用旅行调查数据集中的前几行。我无法找到一个合适的查询结构来获得我想要的,并希望从社区获得帮助。除TRIPNUM列外,我的旅行数据集如下所示,我希望TRIPNUM列如下所示,或者如果TRIPNUM2更简单:Sql 基于以前的行按条件创建和索引计数行,sql,postgresql,survey,Sql,Postgresql,Survey,我试图通过分组构造计算索引,该分组构造必须引用旅行调查数据集中的前几行。我无法找到一个合适的查询结构来获得我想要的,并希望从社区获得帮助。除TRIPNUM列外,我的旅行数据集如下所示,我希望TRIPNUM列如下所示,或者如果TRIPNUM2更简单: UniqueID, PersonID, PlaceType, PlaceTpyeInt, TravelMode, TRIPNUM, TRIPNUM2 6001, 600, Home,
UniqueID, PersonID, PlaceType, PlaceTpyeInt, TravelMode, TRIPNUM, TRIPNUM2
6001, 600, Home, 0, None, 0, 0
6002, 600, Store, 4, Car, 1, 1
6003, 600, Home, 0, Car, 0, 1
6004, 600, Store, 4, Car, 2, 2
6005, 600, Store, 4, Car, 2, 2
6006, 600, Home, 0, Car, 0, 2
6011, 601, Home, 0, None, 0, 0
6012, 601, Store, 4, Car, 1, 1
……等等
我遇到的问题是如何创建必要的标准,以:
CREATE OR REPLACE FUNCTION tripcounter(int) RETURNS TABLE AS
$BODY$
DECLARE
temptrip int;
uniqueid int;
personid int;
tripcount int;
BEGIN
FOREACH personid in $1
temptrip = 0
select uniqueid, perid, ptype, from $1
FOREACH uniqueid
CASE WHEN ptye = 1
THEN tripcount = 0
temptrip = temptrip + 1
ptype <> 1
THEN
tripcount = temptrip
END LOOP;
END;
LANGUAGE plpgsql;
ERROR: syntax error at or near "tripcount"
LINE 1: ...R REPLACE FUNCTION tripcounter(int) RETURNS TABLE tripcount(..
CREATE或REPLACE函数tripcounter(int)将表返回为
$BODY$
声明
诱惑;
唯一整数;
人格智力;
tripcount int;
开始
FOREACH personid,单位:1美元
第二个RIP=0
从$1中选择uniqueid、perid、ptype
FOREACH uniqueid
当ptye=1时的情况
那么tripcount=0
TENTRIP=TENTRIP+1
p类型1
然后
tripcount=trip
端环;
结束;
语言plpgsql;
错误:“tripcount”处或附近出现语法错误
第1行:…R替换函数tripcounter(int)返回表tripcount(。。
如果每次旅行都以PlaceType=Home开始和结束,并假设您的唯一ID按时间顺序进行,那么使用带窗口的分析SQL函数(如行数和模函数)(以下用%表示)似乎很容易做到
使用以下内容作为如何识别行程起点和终点的示意图;根据索引(从0还是1开始),您可能需要翻转行程开始逻辑
一旦你有了识别起点和终点的逻辑,就不难创建一个行程起点主表,在主表中定义按人划分的行程编号,将其连接到相应的行程终点,这样每个记录都是一次行程,在记录中定义了起点和终点,然后在uniqueID>startingPoint和uniqueID上最后一次访问原始表,如果每次旅行都以PlaceType=Home开始和结束,并且假设您的唯一ID按时间顺序进行,那么使用带窗口的分析SQL函数(如row_number)和模函数(由下面的%表示)似乎很容易做到 使用以下内容作为如何识别行程起点和终点的示意图;根据索引(从0还是1开始),您可能需要翻转行程开始逻辑
一旦你有了识别起点和终点的逻辑,就不难创建一个行程起点主表,在主表中定义按人划分的行程编号,将其连接到相应的行程终点,这样每个记录都是一次行程,在记录中定义了起点和终点,然后在uniqueID>startingPoint和uniqueID上最后一次进入原始表那么你的代码在哪里?你能粘贴它吗?我还没有。我一直在到处搜索一个可以引用特定行的函数,但不知道如何解决这个问题。我需要为此编写一个函数吗?到目前为止,我已经从我的_表中选择了*其中placetypeint为0,但它不基于时间顺序的行程顺序进行分离如何确定“时间顺序的行程顺序”根据你提供的信息?你能用简单的语言解释一下你在
tripnum2
中期望的值背后的逻辑吗?那么你的代码在哪里?你能粘贴它吗?我还没有。我一直在到处搜索一个可以引用特定行的函数,但不知道如何解决这个问题。我需要写吗e一个函数?到目前为止,我已经从我的表格placetypeint 0中选择了*,但它并没有根据时间顺序分开。如何根据您提供的信息确定“时间顺序”呢?您能简单地解释一下tripnum2
中期望的值背后的逻辑吗?