postgresql中列的条件和
地铁数据 栏目:postgresql中列的条件和,sql,postgresql,Sql,Postgresql,地铁数据 栏目: 车站id(1,2,3,4,5,6,7,8,1,2,3,4,5,1,2,3,4,5,6,7,1,2,3) 登机人数 离船人数 占用 本站占用率=上一站已上车人数+上车人数-下车人数 我想填写入住率一栏。问题在于,数据集是针对多辆地铁列车的,因此车站id变回1,而在该车站上下车的人数始终为0,因为该车站是列车旅程开始的车站。我不知道如何在postgresql中实现这一点。下面示例图像中的占用率列为空,需要填充 列车行程被分类和分组。 您可以使用累积总和的差值来完成此操作。诀窍是识别
您可以使用累积总和的差值来完成此操作。诀窍是识别组,我将通过计算
station\u id
到该记录为止的1
次数来完成
select s.*,
(sum(boarded) over (partition by grp order by id) -
sum(deboarded) over (partition by grp order by id)
) as occupants
from (select s.*,
count(*) filter (where station_id = 1) over (order by id) as grp
from subwaydata s
) s;
你们可以用累积和的差值来做这件事。诀窍是识别组,我将通过计算
station\u id
到该记录为止的1
次数来完成
select s.*,
(sum(boarded) over (partition by grp order by id) -
sum(deboarded) over (partition by grp order by id)
) as occupants
from (select s.*,
count(*) filter (where station_id = 1) over (order by id) as grp
from subwaydata s
) s;
示例数据和预期输出将非常有用。请回答您的问题并添加一些表格格式的数据和基于该数据的预期输出。请您的问题-不要在评论中发布代码或其他信息。您是否有
train\u id
可以添加到数据集中?你有时间戳吗?谢谢你的建议。我上传了一个样本数据。没有时间戳列,但我创建了一个id列,它是一个serialSQL表,它们的id实际上并不打算这样使用。但是你应该能够使用“运行总数”来实现这一点。也许这个线程会帮助样本数据和预期的输出将真的很有帮助。请你的问题,并添加一些表格格式和基于该数据的预期输出。请您的问题-不要在评论中发布代码或其他信息。您是否有train\u id
可以添加到数据集中?你有时间戳吗?谢谢你的建议。我上传了一个样本数据。没有时间戳列,但我创建了一个id列,它是一个serialSQL表,它们的id实际上并不打算这样使用。但是你应该能够使用“运行总数”来实现这一点。也许这条线会有帮助