omer93olas staking
Updated 2025-01-13
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 date_range AS (
SELECT
MIN(trunc(block_timestamp, 'week')) AS start_date,
MAX(trunc(block_timestamp, 'week')) AS end_date
FROM crosschain.olas.ez_olas_staking
),
weeks AS (
SELECT start_date AS week
FROM date_range
UNION ALL
SELECT DATEADD(week, 1, week)
FROM weeks
WHERE week < (SELECT end_date FROM date_range)
),
program_weeks AS (
SELECT
weeks.week,
programs.program_name
FROM weeks
CROSS JOIN (SELECT DISTINCT program_name FROM crosschain.olas.ez_olas_staking) AS programs
),
program_week_data AS (
SELECT
pw.week,
pw.program_name,
COALESCE(SUM(CASE WHEN event_name = 'Deposit' THEN amount ELSE 0 END), 0) AS staked,
COALESCE(SUM(CASE WHEN event_name = 'Withdrawn' THEN amount ELSE 0 END), 0) AS unstaked,
COALESCE(SUM(CASE WHEN event_name = 'Deposit' THEN amount ELSE 0 END) - SUM(CASE WHEN event_name = 'Withdrawn' THEN amount ELSE 0 END), 0) AS netflow,
COALESCE(COUNT(DISTINCT origin_from_address), 0) AS active_users,
COALESCE(COUNT(DISTINCT tx_hash), 0) AS actions
FROM program_weeks pw
LEFT JOIN crosschain.olas.ez_olas_staking t
ON pw.week = trunc(t.block_timestamp, 'week')
AND pw.program_name = t.program_name
GROUP BY pw.week, pw.program_name
)
QueryRunArchived: QueryRun has been archived