WITH customer_orders AS ( SELECT c.customer_id, c.name AS customer_name, c.segment, o.order_id, o.order_date FROM company_data."100" c INNER JOIN company_data."200" o ON c.customer_id = o.customer_id WHERE o.order_date >= CURRENT_DATE - INTERVAL '90' DAY),order_products AS ( SELECT co.*, p.product_id, p.product_name, p.category FROM customer_orders co INNER JOIN company_data."300" op ON co.order_id = op.order_id INNER JOIN company_data."400" p ON op.product_id = p.product_id)SELECT customer_id, customer_name, segment, category, APPROX_COUNT_DISTINCT(product_id) AS unique_products, COUNT(1) AS total_purchasesFROM order_productsGROUP BY customer_id, customer_name, segment, category
SELECT e.event_id, e.event_type, e.event_timestamp, s.session_id, s.session_start, s.session_endFROM company_data."100" eINNER JOIN company_data."200" s ON e.user_id = s.user_id AND e.event_timestamp BETWEEN s.session_start AND s.session_end
Get the state of a record at a specific point in time:
Copy
Ask AI
SELECT t.transaction_id, t.transaction_date, t.amount, p.price AS price_at_transactionFROM company_data."100" tINNER JOIN ( SELECT product_id, price, effective_date, COALESCE( LEAD(effective_date) OVER (PARTITION BY product_id ORDER BY effective_date), DATE '9999-12-31' ) AS end_date FROM company_data."200") p ON t.product_id = p.product_id AND t.transaction_date >= p.effective_date AND t.transaction_date < p.end_date
SELECT a.event_id AS first_event, b.event_id AS follow_up_event, a.user_id, a.event_timestamp AS first_timestamp, b.event_timestamp AS follow_up_timestampFROM company_data."100" aINNER JOIN company_data."100" b ON a.user_id = b.user_id AND b.event_timestamp > a.event_timestamp AND b.event_timestamp <= a.event_timestamp + INTERVAL '24' HOURWHERE a.event_type = 'page_view' AND b.event_type = 'purchase'
SELECT a.record_id AS record_1, b.record_id AS record_2, a.emailFROM company_data."123" aINNER JOIN company_data."123" b ON a.email = b.email AND a.record_id < b.record_id
SELECT c.customer_id, c.email, c.signup_dateFROM company_data."100" cWHERE NOT EXISTS ( SELECT 1 FROM company_data."200" o WHERE c.customer_id = o.customer_id)
SELECT c.customer_id, c.name, c.segment, COALESCE(stats.order_count, 0) AS order_count, COALESCE(stats.total_spent, 0) AS total_spent, COALESCE(stats.avg_order, 0) AS avg_order_valueFROM company_data."100" cLEFT JOIN ( SELECT customer_id, COUNT(1) AS order_count, SUM(amount) AS total_spent, AVG(amount) AS avg_order FROM company_data."200" GROUP BY customer_id) stats ON c.customer_id = stats.customer_id
WITH customer_base AS ( SELECT customer_id, name, email FROM company_data."100"),order_summary AS ( SELECT customer_id, COUNT(1) AS orders, SUM(amount) AS total FROM company_data."200" GROUP BY customer_id),engagement_summary AS ( SELECT customer_id, COUNT(1) AS interactions, MAX(interaction_date) AS last_interaction FROM company_data."300" GROUP BY customer_id)SELECT c.customer_id, c.name, c.email, COALESCE(o.orders, 0) AS order_count, COALESCE(o.total, 0) AS total_spent, COALESCE(e.interactions, 0) AS engagement_count, e.last_interactionFROM customer_base cLEFT JOIN order_summary o ON c.customer_id = o.customer_idLEFT JOIN engagement_summary e ON c.customer_id = e.customer_id
Merge records from multiple datasets, keeping the most complete:
Copy
Ask AI
WITH all_records AS ( SELECT email, name, phone, 'dataset_1' AS source, updated_at FROM company_data."100" UNION ALL SELECT email, name, phone, 'dataset_2' AS source, updated_at FROM company_data."200"),ranked AS ( SELECT email, name, phone, source, updated_at, ROW_NUMBER() OVER ( PARTITION BY email ORDER BY CASE WHEN name IS NOT NULL THEN 1 ELSE 2 END, CASE WHEN phone IS NOT NULL THEN 1 ELSE 2 END, updated_at DESC ) AS rn FROM all_records)SELECT email, name, phone, sourceFROM rankedWHERE rn = 1
CREATE MATERIALIZED VIEW "enriched_customers"REFRESH_SCHEDULE = '@daily'AS ( SELECT c.customer_id, c.email, c.segment, COALESCE(metrics.order_count, 0) AS lifetime_orders, COALESCE(metrics.total_value, 0) AS lifetime_value, metrics.last_order_date FROM company_data."100" c LEFT JOIN ( SELECT customer_id, COUNT(1) AS order_count, SUM(amount) AS total_value, MAX(order_date) AS last_order_date FROM company_data."200" GROUP BY customer_id ) metrics ON c.customer_id = metrics.customer_id WHERE c._price_cpm_usd <= 1.00)BUDGET 100 USD PER CALENDAR_DAY