如何在Dune Analytics计算特定ETH地址的USD交易手续费?查询求助
在Dune Analytics计算特定ETH地址的USD计价Gas费
原查询的问题
- 仅计算了ETH计价的手续费,但未乘以ETH的USD价格,无法得到USD金额
- 未在查询结果中包含USD计价的计算字段
- 原JOIN写法可能导致价格匹配不严谨,若某分钟无ETH价格,会直接丢失对应交易记录
修正后的查询代码
SELECT date_trunc('minute', block_time) AS tx_minute, hash AS tx_hash, (gas_used * gas_price / 1e18) AS total_fee_eth, -- 核心:将ETH手续费乘以对应分钟的ETH USD价格,得到USD计价手续费 (gas_used * gas_price / 1e18) * prices.price AS total_fee_usd FROM ethereum.transactions -- 用LEFT JOIN避免因价格数据缺失丢失交易,同时将symbol条件移至ON子句 LEFT JOIN prices.usd ON date_trunc('minute', block_time) = prices.minute AND prices.symbol = 'ETH' WHERE "from" = 'xxxxxxxx' -- 替换为你的目标ETH地址,必须加单引号 ORDER BY block_time DESC
关键修正说明
- USD计价计算:新增
total_fee_usd字段,通过(gas_used * gas_price / 1e18)得到ETH手续费后,乘以prices.price(对应分钟的ETH USD价格),直接得到USD金额 - JOIN优化:改用
LEFT JOIN,确保即使某分钟没有ETH价格数据,交易记录依然会被保留(此时total_fee_usd会显示为NULL,可根据需求处理);同时将symbol='ETH'移至JOIN的ON子句,逻辑更清晰 - 字段别名:给字段添加了更直观的别名,方便读取结果
- 地址格式:目标地址必须用单引号包裹,原查询中未加单引号会导致语法错误
内容的提问来源于stack exchange,提问作者mohammad obaid
相关产品推荐
相关产品推荐

