SQL Reference
SQL Reference
Bilinear Labs supports a subset of standard SQL optimized for blockchain data queries.
SELECT
SELECT block_number, tx_hash, event_name
FROM ethereum.events
WHERE event_name = 'Transfer'
ORDER BY block_number DESC
LIMIT 100;Filtering
WHERE
SELECT *
FROM ethereum.events
WHERE contract_address = '0xdAC17F958D2ee523a2206206994597C13D831ec7'
AND block_number > 19000000;JSON fields
Access decoded event arguments with -> and ->>:
SELECT
tx_hash,
args->>'from' AS sender,
args->>'to' AS receiver,
CAST(args->>'value' AS NUMERIC) AS amount
FROM ethereum.events
WHERE event_name = 'Transfer'
AND contract_address = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
LIMIT 50;Aggregations
SELECT
event_name,
COUNT(*) AS total
FROM ethereum.events
WHERE block_number BETWEEN 19800000 AND 19900000
GROUP BY event_name
ORDER BY total DESC
LIMIT 20;Time-Based Queries
SELECT
DATE_TRUNC('day', block_timestamp) AS day,
COUNT(*) AS transfers
FROM ethereum.events
WHERE event_name = 'Transfer'
AND block_timestamp >= NOW() - INTERVAL '7 days'
GROUP BY day
ORDER BY day;Joins
SELECT
e.tx_hash,
e.event_name,
t.from_address,
t.gas_used
FROM ethereum.events e
JOIN ethereum.transactions t ON e.tx_hash = t.tx_hash
WHERE e.event_name = 'Swap'
LIMIT 25;Supported Functions
| Function | Description |
|---|---|
COUNT, SUM, AVG, MIN, MAX |
Standard aggregates |
DATE_TRUNC(unit, timestamp) |
Truncate timestamp |
NOW() |
Current timestamp |
CAST(expr AS type) |
Type conversion |
COALESCE(a, b) |
Null handling |
LOWER(), UPPER() |
String functions |
Limits
- Maximum
LIMIT: 10,000 rows - Query timeout: 30 seconds
- No
INSERT,UPDATE,DELETE— read-only access