# Dune简易学习笔记-入门基础语句 **Published by:** [Untitled](https://paragraph.com/@0x6b612bc2d25b7d5974b017c933d57a5dcd82e611/) **Published on:** 2024-05-30 **URL:** https://paragraph.com/@0x6b612bc2d25b7d5974b017c933d57a5dcd82e611/dune ## Content 本篇是dune的学习笔记, 意在记录自己的学习过程,通过输出的形式来回顾学习成果. 另一方面也是希望借鉴@gm365博主的建议来实践learn in public. 学习目的 大致了解dune的基本使用方法, 了解SQL的语法. 能自己写简单的Query语句. 1. 基本知识 直接用@gm365博主写的,可参考 https://mirror.xyz/gm365.eth/OE_CGx6BjCd-eQ441139sjsa3kTyUsmKVTclgMv09hY 2. 简单的查询语句 2.1 第一条查询语句 查询区块上的10笔交易 select * from ethereum.transactions limit 10 疑问: 我发现每次运行上面的代码得到的数据不一样,于是我尝试加上限制”按照区块降序来”但是运行起来非常慢,以至于超出时间限制.(--代解决--) select * from ethereum.transactions order by "block_time" desc limit 5; 2.2 稍微复杂一点的 查询v神钱包的链上交易信息:查询最新前10条信息,用降序desc. 如果要查最早的10条可用asc升序排列 这里where “from似乎的改了规则, 可直接用地址表示且不加双引号“ SELECT * FROM ethereum.transactions where"from" = 0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6 ORDER BY "block_time" DESC --按照降序查询,最新的在前面,asc则为升序 LIMIT 10 --限制显示10条信息 order by "block_time" asc 2. 查询此钱包转出金额的数量 value / 1e18 AS "value":选择 value 列,将其除以 1e18(即10的18次方)来换算为以太坊的单位(ETH),并将其重命名为 value。 value / 1e18 > 0.1:过滤条件,选择转账金额大于0.1 ETH的交易。 按照 block_time 列进行升序排序,即最早的交易记录排在最前面。 select block_time as "date", value/1e18 as "value" -- value是换算后的单位 from ethereum.transactions where "from" = 0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6 --从此钱包发出的交易 and value/1e18 > 0.1 -- 转账金额大于0.1 ETH order by "block_time" asc-- 按照区块时间倒序排序 查询v神钱包接收eth的数量则把from改为to; select block_time as "date", value/1e18 as "value" -- value是换算后的单位 from ethereum.transactions where "to" = 0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6 --从此钱包发出的交易 and value/1e18 > 0.1 -- 转账金额大于0.1 ETH order by "block_time" asc-- 按照区块时间倒序排序 疑问: 这些查询只是统计eth代币的转账事件吗? 如果转移其他代币且代币的价值大于0.1eth是否会被统计在内? ChatGPT解答: 这些查询只统计了以太坊(ETH)的转账事件,不包括其他代币的转移,为了统计某个钱包接收的代币(ERC-20 或其他类型代币)且这些代币的价值大于0.1 ETH,你需要查询与代币转移相关的交易记录,并可能需要结合代币价格数据进行换算。 ethereum.token_transfers结构如下: block_time: 时间戳 from: 发送地址 to: 接收地址 token_address: 代币合约地址 value: 转移的代币数量 token_price_eth: 代币当前价格(以 ETH 计) SELECT block_time AS "date", value * token_price_eth AS "value_eth", -- 将代币数量乘以其价格,换算为 ETH 价值 token_address -- 代币合约地址 FROM ethereum.token_transfers WHERE "to" = '0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6' -- 接收地址为 V神钱包 AND value * token_price_eth > 0.1 -- 转账价值 > 0.1 ETH ORDER BY block_time DESC -- 按照区块时间倒序排序 未完待续:后面学习图表的使用 总结: 要熟悉常用数据表常见结构, 可边学边用. 可以copy别人代码直接用, 但一定要多举一反三, 联想下其他条件该如何使用. 毕竟这是别人嚼碎的知识, copy知识被动在吸纳, 并未在自己脑海里产生神经元. 感谢@gm365老师的鼓励, 再接再厉, 参考内容: https://mirror.xyz/gm365.eth/OE_CGx6BjCd-eQ441139sjsa3kTyUsmKVTclgMv09hY ## Publication Information - [Untitled](https://paragraph.com/@0x6b612bc2d25b7d5974b017c933d57a5dcd82e611/): Publication homepage - [All Posts](https://paragraph.com/@0x6b612bc2d25b7d5974b017c933d57a5dcd82e611/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@0x6b612bc2d25b7d5974b017c933d57a5dcd82e611): Subscribe to updates