如何将查询结果与从另一个查询接收到的值连接起来?



我想用美元来计算交易成本对于一些最近的事务在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_idbt.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; 

注意:没有测试,没有样本数据和结果。

相关内容

  • 没有找到相关文章

最新更新