Hướng dẫn SQL cho phân tích dữ liệu
Hướng dẫn rõ ràng, thực tế, viết cho người học.

Câu lệnh SQL cơ bản: SELECT, WHERE, ORDER BY, GROUP BY và JOIN cho người mới
SQL cho người mới bắt đầu: học các câu lệnh SQL cơ bản từng bước với ví dụ thật trên cơ sở dữ liệu chuyến bay, từ SELECT đến JOIN, kèm những lỗi hay gặp.

Lộ trình data analyst: học gì, theo thứ tự nào và mất bao lâu
Lộ trình data analyst thực tế: SQL trước, rồi bảng tính, thống kê cơ bản, BI, Python sau, portfolio và phỏng vấn, kèm phần có thể bỏ qua và thời gian ước lượng.

GROUP BY và HAVING trong SQL: khác nhau giữa WHERE và HAVING, kèm ví dụ
GROUP BY và HAVING trong SQL làm gì, WHERE và HAVING khác nhau thế nào, thứ tự SQL thực thi truy vấn và lỗi khiến kết quả nhóm báo lỗi hoặc âm thầm sai.

ROW_NUMBER, RANK và DENSE_RANK trong SQL khác nhau thế nào khi có giá trị bằng nhau
ROW_NUMBER, RANK, DENSE_RANK chỉ khác nhau khi có giá trị bằng nhau. So sánh trong một bảng, chọn hàm cho top N mỗi nhóm, khử trùng, xếp hạng; kèm NTILE.

Hàm tổng hợp trong SQL: COUNT, SUM, AVG, MIN, MAX kèm ví dụ
Hàm tổng hợp SQL: COUNT(*), COUNT(cột), COUNT(DISTINCT), SUM, AVG, MIN, MAX, cách xử lý NULL, dùng với GROUP BY và FILTER, và những cái bẫy làm sai tổng.

CASE WHEN trong SQL: câu lệnh điều kiện, phân loại và tổng hợp có điều kiện
CASE WHEN trong SQL: CASE đơn giản và CASE tìm kiếm, chia nhóm giá trị, sắp xếp tùy chỉnh, xử lý NULL và tổng hợp có điều kiện với SUM, COUNT và FILTER.

SQL cheat sheet cho data analyst: mọi mệnh đề và hàm kèm ví dụ chạy được
SQL cheat sheet gọn cho data analyst: SELECT đến ORDER BY, bộ lọc, hàm tổng hợp, JOIN, CASE, NULL, truy vấn con, CTE, hàm cửa sổ, ngày giờ, chuỗi, có ví dụ.

CTE trong SQL (mệnh đề WITH): viết truy vấn thành từng bước dễ đọc
Cách dùng CTE trong SQL (mệnh đề WITH): cú pháp, nối nhiều bước, dùng lại kết quả, CTE đệ quy, so sánh với truy vấn con và bảng tạm, lỗi thường gặp.

Hàm xử lý ngày tháng trong SQL: EXTRACT, date_trunc, cộng khoảng thời gian và tính số ngày giữa hai ngày
Hàm xử lý ngày tháng SQL cho phân tích: EXTRACT, date_trunc, INTERVAL, tính khoảng cách giữa hai ngày, kèm ví dụ thật và khác biệt PostgreSQL với DuckDB.

Tìm và xóa dữ liệu trùng lặp trong SQL, kèm ví dụ
Tìm dòng trùng bằng GROUP BY và HAVING COUNT(*) > 1, giữ bản đầu bằng ROW_NUMBER hoặc DISTINCT ON, rồi xóa phần còn lại trong SQL Server, MySQL, PostgreSQL.

Câu hỏi phỏng vấn SQL cho data analyst: 20 câu có đáp án
20 câu hỏi phỏng vấn SQL cho data analyst, cả lý thuyết và viết truy vấn: JOIN, NULL, GROUP BY, hàm cửa sổ, giá trị lớn thứ N, trung vị, kèm đáp án mẫu.

JOIN trong SQL: INNER, LEFT, FULL, self join và anti join kèm ví dụ
JOIN trong SQL trên bảng thật: INNER, LEFT, FULL OUTER, self join, anti join, vì sao JOIN nhân bản dòng và cách tránh đếm trùng trong SUM và COUNT.

Hàm LAG và LEAD trong SQL: lấy giá trị dòng trước và dòng sau, kèm ví dụ
LAG lấy giá trị dòng trước, LEAD lấy dòng sau: offset, giá trị mặc định, so với kỳ trước, thời gian giữa hai sự kiện, PARTITION BY, chia phiên và lỗi hay gặp.

Lệnh LIKE trong SQL: ký tự đại diện % và _, ILIKE, NOT LIKE và tìm tiếng Việt có dấu
Cách dùng LIKE trong SQL: ký tự đại diện % và _, ILIKE, NOT LIKE và NULL, thoát ký tự, tìm chữ có dấu, LIKE so với = và khi nào LIKE dùng được index.

NULL trong SQL: IS NULL, COALESCE, NULL trong JOIN, phép đếm và phép so sánh
NULL trong SQL: vì sao = NULL không tìm thấy gì, IS NULL, IS DISTINCT FROM, NULL trong COUNT và AVG, COALESCE, NULLIF, LEFT JOIN và cái bẫy NOT IN.

ORDER BY trong SQL: sắp xếp tăng dần, giảm dần, nhiều cột, NULLS LAST và top N
ORDER BY trong SQL: ASC và DESC, nhiều cột, NULLS FIRST và LAST, sắp theo bí danh hay CASE, top N với LIMIT và giá trị bằng nhau, sắp xếp tiếng Việt.

Pivot trong SQL: chuyển dòng thành cột (và unpivot) kèm ví dụ
Chuyển dòng thành cột trong SQL bằng CASE hoặc FILTER, cú pháp PIVOT và UNPIVOT trong DuckDB và SQL Server, crosstab của PostgreSQL và vì sao cột động khó.

Bài tập SQL có lời giải: 15 bài từ cơ bản đến nâng cao
15 bài tập SQL có lời giải trên cơ sở dữ liệu hãng hàng không thật: từ SQL cơ bản đến JOIN, HAVING, truy vấn con, hàm cửa sổ, kèm kết quả chạy thật.

Self join trong SQL: bảng tự nối với chính nó, kèm ví dụ thực tế
Self join là JOIN một bảng với chính nó qua hai bí danh. Ví dụ: cặp không trùng, chuyến bay nối chuyến, khứ hồi, dòng lịch sử và khi nào nên dùng LAG/LEAD.

Hàm chuỗi trong SQL: CONCAT, SUBSTRING, REPLACE, UPPER, TRIM và hơn thế
Hàm chuỗi SQL để làm sạch và biến đổi văn bản: CONCAT và ||, SUBSTRING, SPLIT_PART, REPLACE, UPPER, TRIM, LPAD, regex, kèm ví dụ chạy thật.

Truy vấn con trong SQL (subquery): trong WHERE, SELECT và FROM, kèm ví dụ
Truy vấn con trong SQL ở WHERE, SELECT và FROM: trả về một giá trị hay danh sách, IN, EXISTS, truy vấn tương quan, bảng dẫn xuất và cái bẫy NOT IN với NULL.

SQL và Excel trong phân tích dữ liệu: mỗi công cụ mạnh ở đâu và cách chuyển sang SQL
So sánh SQL và Excel cho phân tích dữ liệu: công cụ nào thắng ở việc gì, VLOOKUP, pivot table, IF và SUMIFS tương ứng JOIN, GROUP BY, WHERE và CASE ra sao.

Hàm cửa sổ (window function) trong SQL: ROW_NUMBER, RANK, LAG và tổng lũy kế
Hàm cửa sổ trong SQL: OVER và PARTITION BY, ROW_NUMBER, RANK, top N mỗi nhóm, tổng lũy kế, trung bình trượt, LAG/LEAD và khung cửa sổ, kèm kết quả thật.

UNION và UNION ALL trong SQL khác nhau thế nào (kèm INTERSECT và EXCEPT)
UNION loại bỏ dòng trùng, UNION ALL giữ tất cả. Khi nào dùng cái nào, INTERSECT và EXCEPT, quy tắc kết hợp truy vấn và cái bẫy làm sai lệch tổng.