SQL Query Cheatsheet
Common SQL queries: joins, aggregations, window functions, CTEs.
Revision History
No revision history recorded yet.
-- ==========================================
-- SQL Query Cheatsheet
-- ==========================================
-- 1. Basic JOIN with aggregation
SELECT
u.username,
COUNT(o.id) AS order_count,
COALESCE(SUM(o.total), 0) AS total_spent
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.created_at >= '2024-01-01'
GROUP BY u.id, u.username
HAVING COUNT(o.id) > 0
ORDER BY total_spent DESC
LIMIT 10;
-- 2. Common Table Expression (CTE)
WITH monthly_sales AS (
SELECT
DATE_FORMAT(created_at, '%Y-%m') AS month,
SUM(total) AS revenue,
COUNT(*) AS orders
FROM orders
WHERE status = 'completed'
GROUP BY DATE_FORMAT(created_at, '%Y-%m')
)
SELECT
month,
revenue,
orders,
revenue / orders AS avg_order_value,
SUM(revenue) OVER (ORDER BY month) AS running_total
FROM monthly_sales
ORDER BY month;
-- 3. Window function: rank users by activity
SELECT
user_id,
username,
post_count,
RANK() OVER (ORDER BY post_count DESC) AS activity_rank,
NTILE(4) OVER (ORDER BY post_count DESC) AS quartile
FROM (
SELECT
u.id AS user_id,
u.username,
COUNT(p.id) AS post_count
FROM users u
LEFT JOIN posts p ON u.id = p.author_id
GROUP BY u.id, u.username
) user_activity;
-- 4. UPSERT (INSERT ... ON DUPLICATE KEY UPDATE)
INSERT INTO settings (user_id, setting_key, setting_value, updated_at)
VALUES (1, 'theme', 'dark', NOW())
ON DUPLICATE KEY UPDATE
setting_value = VALUES(setting_value),
updated_at = NOW();