zyroqinsufficient-cyan
Updated 2024-12-20
99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
›
⌄
WITH data AS (
-- Combine Spot and Perpetual traders
SELECT trader, block_timestamp
FROM arbitrum.vertex.ez_perp_trades
UNION ALL
SELECT trader, block_timestamp
FROM arbitrum.vertex.ez_spot_trades
),
first_trade_date AS (
-- Find the first trade date for each trader
SELECT
trader,
DATE_TRUNC('{{Granularity}}', MIN(block_timestamp)) AS first_trade_date
FROM data
GROUP BY trader
),
daily_traders AS (
-- Calculate daily new and returning traders
SELECT
DATE_TRUNC('{{Granularity}}', d.block_timestamp) AS date,
COUNT(DISTINCT d.trader) AS total_traders,
COUNT(DISTINCT CASE
WHEN f.first_trade_date = DATE_TRUNC('{{Granularity}}', d.block_timestamp) THEN d.trader
END) AS new_traders,
COUNT(DISTINCT CASE
WHEN f.first_trade_date < DATE_TRUNC('{{Granularity}}', d.block_timestamp) THEN d.trader
END) AS returning_traders
FROM data d
JOIN first_trade_date f
ON d.trader = f.trader
WHERE d.block_timestamp >= current_date - interval '{{period}} days'
GROUP BY date
),
price AS (
QueryRunArchived: QueryRun has been archived