Madi7 days pai
Updated 2022-11-02
999
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 df as (
SELECT
a.BLOCK_TIMESTAMP as BLOCK_TIMESTAMP, a.BLOCK_NUMBER as BLOCK_NUMBER, b.POSITION as POSITION, a.TX_HASH as TX_HASH, a.PLATFORM as PLATFORM, a.ORIGIN_FROM_ADDRESS as ORIGIN_FROM_ADDRESS, a.ORIGIN_TO_ADDRESS as ORIGIN_TO_ADDRESS,
a.CONTRACT_ADDRESS as CONTRACT_ADDRESS,
sum(a.AMOUNT_IN) as AMOUNT_IN, sum(a.AMOUNT_IN_USD) as AMOUNT_IN_USD, sum(a.AMOUNT_OUT) as AMOUNT_OUT, sum(a.AMOUNT_OUT_USD) as AMOUNT_OUT_USD, a.SYMBOL_IN as SYMBOL_IN, a.SYMBOL_OUT as SYMBOL_OUT, SUM(b.GAS_PRICE) as GAS_PRICE, sum(b.GAS_USED) as GAS_USED
from ethereum.core.ez_dex_swaps a join ethereum.core.fact_transactions b
on a.BLOCK_NUMBER = b.BLOCK_NUMBER and a.TX_HASH = b.TX_HASH
WHERE a.PLATFORM = 'uniswap-v2' or a.PLATFORM = 'uniswap-v3'
GROUP BY a.BLOCK_TIMESTAMP, a.BLOCK_NUMBER, b.POSITION, a.TX_HASH, a.PLATFORM, a.ORIGIN_FROM_ADDRESS, a.ORIGIN_TO_ADDRESS,a.CONTRACT_ADDRESS, a.SYMBOL_IN, a.SYMBOL_OUT),
df_1 as (
SELECT BLOCK_NUMBER, ORIGIN_TO_ADDRESS, CONTRACT_ADDRESS, count (DISTINCT TX_HASH) as tx_count
FROM df
GROUP BY BLOCK_NUMBER, ORIGIN_TO_ADDRESS, CONTRACT_ADDRESS
HAVING tx_count = 2
),
df_potential_miners as (
SELECT df.BLOCK_NUMBER, POSITION, TX_HASH, PLATFORM, ORIGIN_FROM_ADDRESS, df.ORIGIN_TO_ADDRESS, df.CONTRACT_ADDRESS, AMOUNT_IN, AMOUNT_IN_USD, AMOUNT_OUT, AMOUNT_OUT_USD, SYMBOL_IN, SYMBOL_OUT, GAS_PRICE, GAS_USED
FROM df INNER JOIN df_1 ON df.BLOCK_NUMBER = df_1.BLOCK_NUMBER and df.ORIGIN_TO_ADDRESS = df_1.ORIGIN_TO_ADDRESS and df.CONTRACT_ADDRESS = df_1.CONTRACT_ADDRESS
),
min_max as (
SELECT BLOCK_NUMBER, CONTRACT_ADDRESS, TX_HASH, min(POSITION) as min_position, max(POSITION) as max_position
FROM df_potential_miners
GROUP BY BLOCK_NUMBER, CONTRACT_ADDRESS, TX_HASH),
query_at as (
SELECT
df_potential_miners.BLOCK_NUMBER, df_potential_miners.PLATFORM, df_potential_miners.CONTRACT_ADDRESS, df_potential_miners.ORIGIN_TO_ADDRESS,
df_potential_miners.ORIGIN_FROM_ADDRESS, df_potential_miners.TX_HASH, min_position, max_position,
CASE WHEN POSITION = min_position then amount_in end as COST,
CASE WHEN POSITION = max_position then amount_out end as REVENUE,
CASE WHEN POSITION = min_position then SYMBOL_IN end as SYMBOL_COST,
CASE WHEN POSITION = max_position then SYMBOL_OUT end as SYMBOL_REVENUE
Run a query to Download Data