You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dune Analytics中关联每日BNB价格的SQL查询求助

Dune Analytics SQL查询:关联交易数据与BNB每日价格

你的问题核心是BNB_Data CTE未提取日期字段,导致无法和交易数据的日期做关联匹配。另外需要确保BNB价格数据按日聚合,避免单日内多条价格数据造成结果重复。

以下是修正后的完整SQL代码:

WITH Drip_Data AS (
    SELECT
        DATE_TRUNC('day', evt_block_time) AS day,
        "token_amount" / 1e18 AS "No. Drip Tokens Sold",
        "bnb_amount" / 1e18 AS "BNB Received"
    FROM
        drip."fountain_evt_onBnbPurchase"
    WHERE
        buyer = '\xFdD4D2e4e3b344429107590c20BCf4B88281Da33'
),
BNB_Data AS (
    SELECT
        -- 假设bnb_price表含timestamp字段,按日截断;若表本身有day列可直接使用
        DATE_TRUNC('day', timestamp) AS day,
        -- 取当日平均BNB价格,也可改用MAX/MIN/LAST_VALUE取收盘价,按需调整
        AVG(BNB_USD_PRICE) AS "BNB Price (on that day)"
    FROM
        dune_user_generated."bnb_price"
    GROUP BY
        DATE_TRUNC('day', timestamp)
)
SELECT
    dd.day AS "DATE",
    dd."No. Drip Tokens Sold",
    dd."BNB Received",
    bd."BNB Price (on that day)"
FROM
    Drip_Data dd
INNER JOIN
    BNB_Data bd ON dd.day = bd.day;

关键说明:

  • 日期关联:两个CTE都通过DATE_TRUNC('day', ...)生成统一格式的日期字段,作为JOIN的匹配条件
  • 价格聚合:对BNB价格按日做聚合(示例用AVG),确保单日仅一条价格数据,避免JOIN后结果膨胀
  • 字段命名:直接在CTE中定义最终需要的列名,简化主查询写法
  • JOIN类型:若部分日期无BNB价格数据但想保留交易记录,可改用LEFT JOIN,此时价格列会显示为NULL

内容的提问来源于stack exchange,提问作者Sasha Gorgov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 06:18:24