Trang chủ>  Blog >  Chia sẻ kinh nghiệm >  🗄️ SQL for Data Scientist – “Kỹ Năng Sống Còn” Trong Data Science

🗄️ 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 🧠⚡

  300 lượt xem

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

Chương trình đào tạo: Phân tích dữ liệu, Khoa học dữ liệu, Kĩ sư dữ liệu, Lập trình ứng dụng.
Chất lượng nhất - Uy tín nhất - Nhiều học viên tin tưởng nhất
Hơn 8000 học viên ưu tú đã tốt nghiệp
Đă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 địa điểm học

*Vui lòng chọn giới tính

*Vui lòng chọn 1 trường


Các bài viết liên quan


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.

CTE (WITH) – Tối ưu truy vấn phức tạp

Khi phân tích dữ liệu, bạn sẽ gặp những truy vấn dài, lồng nhiều cấp và khó đọc. CTE (Common Table Expression) là “vũ khí bí mật” giúp chia nhỏ truy vấn thành từng bước, dễ hiểu và dễ bảo trì – giống như chia code thành các hàm nhỏ.

Làm sạch dữ liệu bằng SQL: NULL, trùng lặp, chuẩn hóa

Khi làm phân tích dữ liệu, điều đầu tiên bạn cần làm không phải là vẽ biểu đồ, mà là làm sạch dữ liệu. Dữ liệu bẩn có thể đến từ form điền tay, hệ thống nhập liệu lỗi, hoặc sai sót khi merge nhiều bảng. → Trong bài viết này, bạn sẽ học cách dùng SQL để: • Xử lý giá trị NULL • Xoá hoặc lọc dòng trùng lặp • Chuẩn hóa dữ liệu trước khi phân tích hoặc đưa vào Power BI/Tableau

Các bài viết liên quan