我想用美元来计算交易成本对于一些最近的事务在Rootstock区块链上我有一个带有令牌的PostgreSQL数据库表价格reports.token_prices
从中选择值以美元计算的最新可用RBTC价格:
select tp.price_in_usd
from reports.token_prices tp
where tp.chain_id = 30
and tp.coingecko_token_id = 'rootstock'
order by tp.dt desc
limit 1
(注意tp.dt
是一个时间戳)
查询结果:
16995.771
然后我有一个包含所有事务的表,chain_rsk_mainnet.block_transactions
,我从中选择汽油费最近的5个:
select
bt.fees_paid
from chain_rsk_mainnet.block_transactions bt
order by bt.block_id desc, bt.tx_offset
limit 5
(注意,我没有使用时间戳,而是使用bt.block_id
和bt.tx_offset
作为事务顺序)
结果:
0
4469416300800
4469416300800
16450260000000
0
现在我想把这些数字相乘根据第一个查询的结果。我如何在SQL中做到这一点?
如果没有进一步的信息,最简单的选择就是将第一个查询转换为CTE,然后Join,从而产生第二个查询。
with price_cte(price_in_usd) as
(select tp.price_in_usd
from reports.token_prices tp
where tp.chain_id = 30
and tp.coingecko_token_id = 'rootstock'
order by tp.dt desc
limit 1
)
select bt.fees_paid * p.price_in_usd) "Fees Paid in USD"
from chain_rsk_mainnet.block_transactions bt
cross join price_cte p
order by bt.block_id desc, bt.tx_offset
limit 5;
注意:没有测试,没有样本数据和结果。