首先,我还在学习sql / postgresql
所以我急切地寻找解释和思考过程/策略而不仅仅是原始答案。我提前为潜在的未来误解或愚蠢的#34;而道歉。的问题。
此外,如果你知道一个伟大的网站,提出锻炼或挑战,以掌握sql / postgresql
,我会采取一切:)
我正在寻找一种方法来根据同一个表中的其他特定结果返回最接近的值。
在同一张表中,我正在跟踪不同的事件:
ESESS
=结束会话事件。每当Georges(id)完成一个会话时给我一个新的时间戳(ts)(让我们说Georges正在使用一台计算机,所以结束会话=关闭计算机)USD
=金额库存更新事件。每次乔治花钱/赚钱时,这3列将返回新的余额(v),以及余额更新时的身份和时间戳(ts)。我想要得到的是每次会议结束时的余额。
我的计划是只在(ts.esess - ts.usd)等于最小的最小正值时返回esess.id和usd.v。 所以从ts.usd进行某种查找,当(ts.esess - ts.usd)符合条件时......但是我正在与那部分斗争。
以下是以下链接中的策略: QUERY PLAN
以下是查询:
SELECT
sessId, moneyV
FROM
(
SELECT
ts as sessTs,
mid as sessId
FROM
table1
WHERE
n='esess'
) as sess
INNER JOIN
(
SELECT
ts as moneyTs,
mid as moneyId,
v as moneyV
FROM
table1
WHERE
n='usd'
)as balance
ON sessId = moneyId
WHERE
sessTs - moneyTs =
(
SELECT
sessTs - moneyTs as timeDiff
FROM
table1
WHERE
sessTs - moneyTs > 0
ORDER BY
timeDiff ASC
LIMIT 1
)
;
那我该怎么办?
另外,我挖掘找到答案并特别找到this post,但是并不了解所有内容并且无法使其正常工作......
提前致谢!