簡體   English   中英

postgresql-計算行之間的差異

[英]postgresql- calculating difference between rows

大家好,下面是我的數據庫架構,我需要能夠生成一個查詢,以便我看到每個史詩,現在的 bid_px 和 5 分鍾前的 bid_px 之間的區別

 epic                       t                   bid_px  ask_px
 MARKET:IX.D.FANG.DAILY.IP  2019-12-17 13:25:19  2985.5 2988.5
 MARKET:IX.D.FTSE.MONTH1.IP 2019-12-17 13:25:17  7516.3 7520.3
 MARKET:IX.D.FTSE.MONTH1.IP 2019-12-17 13:25:15  7515.8 7519.8
 MARKET:IX.D.FTSE.MONTH1.IP 2019-12-17 13:25:15  7516   7520
 MARKET:KB.D.MID250.MAR.IP  2019-12-17 13:25:15 21700  21852
 MARKET:IX.D.FTSE.MONTH1.IP 2019-12-17 13:25:14  7516   7520
 MARKET:KB.D.MID250.DEC.IP  2019-12-17 13:25:13 21645  21775
 MARKET:KB.D.MID250.DEC.IP  2019-12-17 13:25:11 21645  21776

我提出了以下查詢:

SELECT 
  (SELECT bid_px as val2
    from
      ig_markets where t<NOW() order by t desc limit 1
  ) - 
    (SELECT bid_px as val1
    from
      ig_markets WHERE t<NOW()- INTERVAL '3 minutes' order by t desc limit 1
  )  AS  total_count  

上面顯示了每個史詩的總結果,我希望它列出史詩和差異,例如:

epic | total_count 
MARKET:IX.D.FANG.DAILY.IP,10
MARKET:KB.D.MID250.DEC.IP,-10
MARKET:IX.D.FTSE.MONTH1.IP,6

我不完全確定我理解你的問題,但我相信一個子查詢可以幫助你,例如

SELECT 
  t1.epic, t1.bid_px -
  (SELECT t2.bid_px FROM ig_markets t2
   WHERE t2.epic = t1.epic AND
         t2.t < now() - INTERVAL '3 minutes' 
   ORDER BY t DESC LIMIT 1)
FROM ig_markets t1
WHERE t1.t < now();

編輯:刪除重復項(未經測試)並選擇最后一個時間戳 - 請參閱下面的評論。

SELECT DISTINCT ON (t1.epic) 
  t1.epic, t1.bid_px - 
  (SELECT t2.bid_px 
  FROM ig_markets t2 
  WHERE t2.epic = t1.epic AND t2.t < now() - INTERVAL '3 minutes' 
  ORDER BY t DESC LIMIT 1) 
FROM ig_markets t1 WHERE t1.t < now()

或者使用 CTE

WITH j AS (
SELECT t,
  t1.epic, t1.bid_px -
  (SELECT t2.bid_px FROM ig_markets t2
   WHERE t2.epic = t1.epic AND
         t2.t < now() - INTERVAL '3 minutes' 
   ORDER BY t DESC LIMIT 1) AS diff
FROM ig_markets t1
WHERE t1.t < now() )
SELECT DISTINCT ON (epic) max(t), epic, diff FROM j
GROUP BY epic, diff
ORDER BY epic;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM