🗄️ SQL for Data Scientist – “Kỹ Năng Sống Còn” Trong Data Science
Khi nói về kỹ năng chuyên môn của Data Scientist, người ta thường nghĩ đến mô hình, Python, hay visualization. Nhưng trong thực tế dự án, bạn sẽ dành phần lớn thời gian để truy vấn dữ liệu, tổng hợp, lọc và chuẩn bị dataset — và công cụ cốt lõi chính là SQL 🧠⚡
Nội dung bài viết
1️⃣ Tại Sao SQL Quan Trọng Đến Vậy? 🤔
-
🧰 Truy xuất dữ liệu gốc: hầu hết dữ liệu được lưu trong RDBMS, Data Warehouse, Data Lake (Snowflake, BigQuery, Redshift...).
-
🧠 Chuẩn bị dataset & feature: SQL là công cụ nhanh, rõ ràng và tối ưu cho việc aggregation, join, filter.
-
⚡ Hiệu năng cao: Database xử lý truy vấn tối ưu hơn Python loop rất nhiều.
-
🔄 Dễ tích hợp với pipeline: query có thể gắn vào dbt, Airflow, Feature Store.
📌 Thực tế: Data Scientist senior thường viết SQL như “thở”, dùng để kiểm tra giả thuyết, build cohort, tạo feature trực tiếp trong warehouse — không cần xuất ra Excel hay pandas sớm.
2️⃣ 4 Nhóm Kỹ Năng SQL Cốt Lõi Cho Data Scientist 🧭
2.1 Data Exploration & Filtering 🔍
“Hiểu dữ liệu bằng SQL nhanh hơn mở notebook.”
-
SELECT + WHERE → lọc dữ liệu theo điều kiện
-
DISTINCT → đếm unique
-
GROUP BY + COUNT/SUM/AVG → thống kê mô tả nhanh
-
LIKE / REGEXP → lọc pattern (rất hữu ích với log text)
📌 Ví dụ:
SELECT customer_city, COUNT(*) AS total_orders
FROM orders
WHERE order_date >= '2025-01-01'
GROUP BY customer_city
ORDER BY total_orders DESC;
→ Top thành phố theo số đơn hàng kể từ đầu năm 🏙️📊
2.2 Data Transformation & Aggregation 🧱
“SQL không chỉ để truy xuất, mà còn để biến đổi dữ liệu.”
-
CASE WHEN → tạo biến phân loại logic
-
JOIN (INNER, LEFT, FULL) → ghép dữ liệu từ nhiều bảng (orders, customers, products...)
-
Subquery / CTE (WITH) → chia nhỏ logic phức tạp, dễ đọc hơn
-
Aggregate functions: SUM, COUNT, AVG, MIN, MAX
-
HAVING → lọc sau khi group
📌 Ví dụ: tạo phân khúc khách hàng dựa vào doanh thu:
SELECT customer_id,
SUM(total_amount) AS total_revenue,
CASE
WHEN SUM(total_amount) > 10000000 THEN 'VIP'
WHEN SUM(total_amount) BETWEEN 3000000 AND 10000000 THEN 'Regular'
ELSE 'Newbie'
END AS segment
FROM orders
GROUP BY customer_id;
→ Feature “customer_segment” dùng được ngay cho churn prediction 🚀
2.3 Window Functions 🧠⚡
“Đây là ‘đòn bẩy’ giúp Data Scientist viết SQL như dân analytics senior.”
-
ROW_NUMBER(), RANK(), DENSE_RANK() → xác định thứ tự trong nhóm
-
LAG() / LEAD() → so sánh giá trị giữa các dòng liên tiếp
-
SUM() OVER(), AVG() OVER() → rolling/ cumulative features
-
Partition theo nhóm + Order theo thời gian → tạo feature động
📌 Ví dụ: Tính doanh số cộng dồn theo khách hàng theo thời gian ⏳
SELECT customer_id,
order_date,
SUM(total_amount) OVER(PARTITION BY customer_id ORDER BY order_date) AS cumulative_spend
FROM orders;
→ Feature “cumulative_spend” cực kỳ hữu ích cho model CLV & churn.
2.4 Cohort Analysis & Advanced Use Cases 📊
“Cohort analysis = SQL + thời gian + partition magic.”
-
Cohort grouping: gán user vào cohort dựa trên hành vi đầu tiên (VD: first_purchase_date).
-
Retention calculation: join cohort với hành vi sau này → tính % giữ chân.
-
Churn windowing: xác định khách hàng rời sau N ngày.
-
Feature store: tạo bảng feature trong warehouse → model gọi trực tiếp.
📌 Ví dụ: cohort theo tháng đăng ký, tính retention sau 30 ngày
WITH first_purchase AS (
SELECT customer_id, MIN(order_date) AS first_date
FROM orders
GROUP BY customer_id
),
activity AS (
SELECT o.customer_id,
DATE_DIFF(o.order_date, f.first_date, DAY) AS days_since_first
FROM orders o
JOIN first_purchase f USING(customer_id)
)
SELECT
EXTRACT(YEAR FROM first_date) AS cohort_year,
EXTRACT(MONTH FROM first_date) AS cohort_month,
COUNT(DISTINCT customer_id) FILTER (WHERE days_since_first BETWEEN 0 AND 30) AS retained_30d,
COUNT(DISTINCT customer_id) AS total_users,
retained_30d * 1.0 / total_users AS retention_rate
FROM activity
JOIN first_purchase USING(customer_id)
GROUP BY cohort_year, cohort_month
ORDER BY cohort_year, cohort_month;
→ Retention table để vẽ retention curve trong dashboard Power BI/Tableau 📈
3️⃣ Mô Hình Dữ Liệu “Star Schema” – Bí Quyết Viết SQL Dễ Mở Rộng 🌟
Một lỗi phổ biến của DS junior là truy vấn từ bảng raw hỗn độn, join lộn xộn → query chậm & khó maintain.
Cách chuẩn là dùng Star Schema:
┌───────────────┐
│ Dim_Customer │
└──────┬────────┘
│ 1-n
┌──────▼────────┐
┌──────────┐ │ Fact_Sales │ ┌──────────┐
│Dim_Date │─┤ ├─│Dim_Product│
└──────────┘ └───────────────┘ └──────────┘
-
Fact Table: lưu các transaction (sales, events…)
-
Dimension Table: mô tả thuộc tính (customer, product, date...)
-
Viết query theo star schema → dễ đọc, join ít lỗi, scale tốt.
📌 Đây cũng là nền tảng để thiết kế feature store cho ML pipeline sau này.
4️⃣ Những Sai Lầm SQL Junior Hay Mắc ❌
-
🚫 Join sai điều kiện → nhân bản dữ liệu → kết quả sai bét
-
🚫 Không filter rõ → quét toàn bảng → query cực chậm
-
🚫 Tạo feature mà không chú ý thứ tự thời gian → gây data leakage
-
🚫 Viết query “spaghetti” không có CTE → không ai maintain nổi 😅
-
🚫 Không kiểm tra null → tính toán lệch
5️⃣ Best Practices Cho Data Scientist ✅
-
✍️ Viết query rõ ràng, chia nhỏ logic bằng CTE (WITH)
-
🧠 Hiểu mô hình dữ liệu, đặc biệt là star schema
-
⏱️ Tối ưu truy vấn: chỉ chọn cột cần thiết, filter sớm, dùng index
-
🧪 Test kết quả từng bước → tránh sai logic ngầm
-
🔄 Tái sử dụng query trong pipeline bằng dbt hoặc views
6️⃣ Ví Dụ Thực Tế – Xây Dataset ML Bằng SQL Cho Bài Toán Churn 📈
Mục tiêu: tạo dataset training dự đoán churn khách hàng e-commerce.
Dữ liệu:
-
orders
(giao dịch) -
customers
(thông tin KH) -
email_logs
(hành vi marketing)
Query tổng hợp feature:
-
Tổng số đơn 30 ngày gần nhất
-
Tổng chi tiêu cộng dồn
-
Thành phố (one-hot top city)
-
Tỷ lệ mở email, tỷ lệ click
📌 Sau khi tạo bảng feature bằng SQL → model logistic regression train nhanh, ROC-AUC đạt 0.85 mà không cần code Python phức tạp 🧠⚡
📝 Kết Luận
SQL không chỉ là “một kỹ năng phụ”, mà là công cụ chính để Data Scientist làm chủ dữ liệu, tạo feature chuẩn, và rút insight nhanh.
Khi bạn viết SQL tốt:
-
🚀 Bạn truy xuất và xử lý dữ liệu hiệu quả hơn
-
🧠 Bạn hiểu rõ cấu trúc dữ liệu của hệ thống
-
🧰 Bạn xây được pipeline bền vững, dễ mở rộng cho ML & BI
👉 Đây là module mà nếu bạn làm tốt, bạn đã hơn 70% DS junior trên thị trường rồi đó 😎
📞 Hotline: 0352.433.233
🌐 mcivietnam.com
📺 youtube.com/@HocVienMCI
👥 facebook.com/groups/dataaivn

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