1
+ WITH filtered_balances AS
2
+ (
3
+ SELECT
4
+ max (block_num) AS block_num,
5
+ max (timestamp ) AS timestamp ,
6
+ any(program_id) AS program_id,
7
+ account,
8
+ argMax(amount, b .timestamp ) AS amount,
9
+ mint,
10
+ any(decimals) AS decimals
11
+ FROM balances AS b
12
+ WHERE
13
+ mint = {mint:String}
14
+ AND account IN (
15
+ SELECT DISTINCT account
16
+ FROM balances
17
+ WHERE mint = {mint:String}
18
+ ORDER BY amount DESC
19
+ LIMIT {limit :UInt64}
20
+ )
21
+ GROUP BY mint, account
22
+ ORDER BY amount DESC
23
+ LIMIT {limit :UInt64}
24
+ OFFSET {offset:UInt64}
25
+ ),
26
+ owners AS
27
+ (
28
+ SELECT
29
+ account,
30
+ owner
31
+ FROM owner_state_latest AS o
32
+ WHERE account IN (SELECT account FROM filtered_balances)
33
+ ),
34
+ metadata AS
35
+ (
36
+ SELECT
37
+ mint,
38
+ if(empty(name), NULL , name) AS name,
39
+ if(empty(symbol), NULL , symbol) AS symbol,
40
+ if(empty(uri), NULL , uri) AS uri
41
+ FROM metadata_view
42
+ WHERE metadata IN (
43
+ SELECT metadata
44
+ FROM metadata_mint_state_latest
45
+ WHERE mint IN (SELECT mint FROM filtered_balances)
46
+ GROUP BY metadata
47
+ )
48
+ )
1
49
SELECT
2
- block_num,
3
- timestamp as last_balance_update,
4
- toString(owner) AS owner,
5
- amount,
6
- toString(b .amount / pow(10 , decimals)) as value,
50
+ b .timestamp AS last_update,
51
+ block_num AS last_update_block_num,
52
+ toUnixTimestamp(b .timestamp ) AS last_update_timestamp,
53
+ toString(program_id) AS program_id,
54
+ toString(owner) AS owner,
55
+ toString(account) AS token_account,
56
+ toString(mint) AS mint,
57
+ toString(b .amount ) AS amount,
58
+ b .amount / pow(10 , decimals) AS value,
7
59
decimals,
8
- ' TO IMPLEMENT' as symbol,
9
- {network_id: String} as network_id
10
- FROM balances_by_mint AS b
11
- FINAL
12
- WHERE
13
- mint = {contract: String} AND amount > 0
14
- ORDER BY value DESC
15
- LIMIT {limit :UInt64}
16
- OFFSET {offset:UInt64}
60
+ name,
61
+ symbol,
62
+ uri,
63
+ {network_id:String} AS network_id
64
+ FROM filtered_balances AS b
65
+ LEFT JOIN metadata USING mint
66
+ LEFT JOIN owners USING account
67
+ ORDER BY value DESC
0 commit comments