簡體   English   中英

如何根據INPUT和OUTPUT計算資產的流動余額

[英]How to calculate the running balance of an asset based on INPUT and OUTPUT

我正在查看不同的區塊鏈交易,並希望根據INPUT_ADDRESS (發送貨幣的地址) INPUT_AMOUNT (由 INPUT_ADDRESS 發送的金額)、 OUTPUT_ADDRESS (接收貨幣的地址)和OUTPUT_AMOUNT創建給定資產的運行余額(OUTPUT_ADDRESS 收到的金額)

這是我正在使用的表格示例:

BLOCK_DATE | BLOCK_HEIGHT | TRANS_HASH | INPUT_ADDRESS | OUTPUT_ADDRESS | INPUT_AMOUNT | OUTPUT_AMOUNT
01/11/2020    190            15c7853       abc             xyz1             -0.01          0.0001
01/11/2020    190            14v9876       abc             xyz2             -0.50          0.70
01/11/2020    191            19vc842       abc             xyz3             -5.03          0.413
01/12/2020    192            20ff4d3       abc             xyz4             -0.06          0.201
01/12/2020    192            154gf34       xyz1            abc              -0.07          0.18
01/12/2020    192            45f4ti5       ggg             abc              -0.10          0.24
01/12/2020    192            33cv5c5       jjj             abc              -0.08          1.13 

如果我要計算地址abc的運行總和,那么解決此問題的有效方法是什么? 我嘗試使用類似的東西:

SELECT BLOCK_DATE, BLOCK_HEIGHT, TRANS_HASH, INPUT_ADDRESS, OUTPUT_ADDRESS, INPUT_AMOUNT, OUTPUT_AMOUNT, SUM (INPUT_AMOUNT) OVER (ORDER BY DATE) AS RunningAgeTotal
FROM TRANSACTION_TABLE
WHERE INPUT_ADDRESS = abc

在此特定示例中,abc 的總余額將是 OUTPUT_AMOUNT 的總和,其中 abc 是 OUTPUT_ADDRESS(即 0.18 + 0.24 + 1.13)+ INPUT_AMOUNT 的總和,其中 abc 是 INPUT_ADDRESS(即 -0.01 + -0.50 + -5.03 + -0.06)。 所以,1.55 + (-5.60) = -4.05

但我認為這不是解決這個問題的正確方法,我不確定如何解釋 OUTPUT_AMOUNT(例如,當 abc 收到的是 OUTPUT_ADDRESS 並收到 OUTPUT_AMOUNT 時)

這是你想要的嗎?

select t.*,
       sum(case when input_address = 'ABC' then input_amount
                when output_address = 'ABC' then output_amount
           end) over (order by block_date) as running_amount
from transaction_table t
where 'ABC' in (input_address, output_address);

這是與輸入/輸出列對齊的金額的累積總和。

編輯:

您可能想要:

       sum(case when input_address = 'ABC' then input_amount
                when output_address = 'ABC' then output_amount
           end) over (order by block_date, block_height) as running_amount

暫無
暫無

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

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