gpt4 book ai didi

sql - 如何根据 INPUT 和 OUTPUT 计算 Assets 的运行余额

转载 作者:行者123 更新时间:2023-12-03 02:26:50 26 4
gpt4 key购买 nike

我正在查看不同的区 block 链交易,并希望根据 INPUT_ADDRESS(发送货币的地址)INPUT_AMOUNT(金额)创建给定 Assets 的运行余额由 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

关于sql - 如何根据 INPUT 和 OUTPUT 计算 Assets 的运行余额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66630758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com