Louis Guthmann
1 min readNov 15, 2018

--

About the count of not empty wallets, I only managed to get this far aka return all wallets changes over time. Every time i tried something after that, I crash BigQuery CPU. Any feedbacks?

#standardSQL
with double_entry_book as (
— debits
select to_address as address, value as value, cast(block_timestamp as DATE) as dates
from `bigquery-public-data.ethereum_blockchain.traces`
where to_address is not null
and status = 1
and (call_type not in (‘delegatecall’, ‘callcode’, ‘staticcall’) or call_type is null)
union all
— credits
select from_address as address, -value as value, cast(block_timestamp as DATE) as dates
from `bigquery-public-data.ethereum_blockchain.traces`
where from_address is not null
and status = 1
and (call_type not in (‘delegatecall’, ‘callcode’, ‘staticcall’) or call_type is null)
union all
— transaction fees debits
select miner as address, sum(cast(receipt_gas_used as numeric) * cast(gas_price as numeric)) as value,
cast(block_timestamp as DATE) as dates
from `bigquery-public-data.ethereum_blockchain.transactions` as transactions
join `bigquery-public-data.ethereum_blockchain.blocks` as blocks on blocks.number = transactions.block_number
group by blocks.miner, dates
union all
— transaction fees credits
select from_address as address, -(cast(receipt_gas_used as numeric) * cast(gas_price as numeric)) as value,
cast(block_timestamp as DATE) as dates
from `bigquery-public-data.ethereum_blockchain.transactions`

)
select address, dates, sum(value) OVER (
PARTITION BY address
ORDER BY dates, dates ROWS UNBOUNDED PRECEDING) as balance
from double_entry_book

--

--