10 SQL Pattern Quan Trọng Cho Data Analyst – Phải Thuộc Lòng
SQL là “vũ khí số 1” của mọi Data Analyst. Nhưng không phải ai cũng biết cách dùng SQL hiệu quả – nhiều bạn chỉ dừng ở SELECT, WHERE đơn giản. 💡 Đây là 10 SQL pattern (mẫu câu truy vấn) phổ biến nhất trong công việc Data Analyst, kèm ví dụ thực tế để bạn có thể copy–paste và áp dụng ngay.
Nội dung bài viết
Lấy Top N Bản Ghi Theo Nhóm
SELECT customer_id, order_date, revenue
FROM (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY order_date ASC) AS rn
FROM orders
) t
WHERE rn = 1;
📌 Use case: Lấy đơn hàng đầu tiên của từng khách để phân tích cohort.
Tính Lũy Kế (Running Total)
SELECT order_date,
SUM(revenue) OVER(ORDER BY order_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cum_revenue
FROM orders;
📌 Dùng để vẽ chart doanh thu tích lũy theo thời gian (YTD).
So Sánh Tháng Này vs Tháng Trước
SELECT month,
revenue,
revenue - LAG(revenue) OVER(ORDER BY month) AS diff
FROM monthly_sales;
📌 Dùng để làm phân tích MoM (Month over Month).
Tìm Outlier (Giá Trị Bất Thường)
SELECT *
FROM sales
WHERE revenue > AVG(revenue) * 1.5;
📌 Dùng khi cần phát hiện đơn hàng bất thường cao bất thường.
Tìm Khách Hàng Không Mua Lại
SELECT DISTINCT c.customer_id
FROM customers c
LEFT JOIN orders o ON c.customer_id = o.customer_id
WHERE o.customer_id IS NULL;
📌 Dùng cho phân tích churn.
Gộp Nguồn Dữ Liệu Khác Schema
SELECT customer_id, revenue, '2025-Q1' AS period FROM orders_q1
UNION ALL
SELECT customer_id, revenue, '2025-Q2' AS period FROM orders_q2;
📌 Dùng khi dữ liệu chia theo quý, cần gộp thành 1 bảng.
Tìm Top 3 Sản Phẩm Theo Doanh Thu
SELECT product_id, SUM(revenue) AS total_revenue
FROM orders
GROUP BY product_id
ORDER BY total_revenue DESC
LIMIT 3;
📌 Dùng để tìm sản phẩm bán chạy nhất.
Join Bảng Lookup
SELECT o.order_id, o.revenue, p.product_name
FROM orders o
JOIN products p ON o.product_id = p.product_id;
📌 Dùng để gắn thêm thông tin tên sản phẩm từ bảng dimension.
Phân Loại Khách Theo Doanh Thu (CASE WHEN)
SELECT customer_id,
CASE
WHEN SUM(revenue) > 100000 THEN 'VIP'
WHEN SUM(revenue) BETWEEN 50000 AND 100000 THEN 'Regular'
ELSE 'Low-Value'
END AS customer_segment
FROM orders
GROUP BY customer_id;
📌 Dùng để phân nhóm khách hàng phục vụ marketing.
Tính Tỷ Lệ Đóng Góp (Percent of Total)
SELECT product_id,
SUM(revenue) AS total_revenue,
SUM(revenue) * 100.0 / SUM(SUM(revenue)) OVER() AS pct_contribution
FROM orders
GROUP BY product_id;
📌 Dùng để vẽ Pareto Chart (80/20) hoặc phân tích đóng góp theo sản phẩm.
Tips Pro
- Dùng CTE (WITH) để chia query phức tạp thành nhiều bước dễ đọc
- Thêm comment giải thích logic → đồng đội dễ maintain
- Kiểm tra hiệu năng bằng EXPLAIN → tối ưu join và index
Kết Luận
✅ Thuộc 10 pattern này = 80% nhu cầu phân tích của Data Analyst đã được giải quyết
✅ Giúp bạn giảm thời gian viết query, tăng thời gian phân tích insight
✅ Là nền tảng để học nâng cao hơn: Window Functions, dbt, BigQuery
🎓 Khoá “SQL for Analyst" – tại MCI Academy
• Học từ cơ bản → nâng cao, luyện tập 100+ bài tập thực tế
• Làm mini project: phân tích cohort, churn, MoM growth
• Mentor review query & tối ưu performance
📞 Hotline: 0352.433.233
📧 Email: cskh@mcivietnam.com

Các khóa học
- Mastering AWS : From Basics to Applications Specialized
- Data Engineer Track Specialized
- Combo Data Engineering Professional Hot
- AI & DASHBOARD – CHỈ 990K Hot
- Combo Python Level 1 & Level 2 Bestseller
- Business Intelligence Track Hot
- Data Science Track Bestseller
- Data Analyst Professional (Data Analyst with Python Track) Bestseller
- RPA UiPath Nâng Cao: Chiến Thuật Automation Cho Chuyên Gia Specialized
- RPA UiPath cho Người Mới Bắt Đầu: Thành Thạo Automation Chỉ Trong 1 Ngày Specialized
- Business Analyst Fast Track Bestseller
- Business Analyst Bestseller
Đăng ký tư vấn khóa học
*Vui lòng nhập số điện thoại của bạn
*Vui lòng nhập họ tên của bạn
*Vui lòng chọn giới tính
*Vui lòng chọn 1 trường