根据多个条件查找最接近的正值

时间:2016-02-11 16:06:47

标签: postgresql join vlookup

首先,我还在学习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,但是并不了解所有内容并且无法使其正常工作......

提前致谢!

0 个答案:

没有答案