Với người làm phân tích kinh doanh, SQL chỉ cần ở mức chọn, lọc, gộp nhóm, nối bảng và chia truy vấn thành nhiều bước — năm nhóm thao tác này giải quyết phần lớn câu hỏi hằng ngày. Cái khó thật không phải cú pháp mà là logic: nối bảng làm nhân đôi dòng, đếm trùng khách, lọc nhầm ngày. Đó cũng là chỗ trợ lý AI hay viết sai mà người mới không thấy.
Bài này dành cho người đã quen bảng tính và muốn tự lấy dữ liệu thay vì chờ người khác xuất tệp. Bài mô tả bằng lời từng nhóm thao tác gắn với câu hỏi kinh doanh, liệt kê các lỗi logic hay gặp, rồi hướng dẫn cách luyện cùng AI sao cho AI là người ra đề và người soát bài chứ không phải người làm hộ. Cuối bài có lộ trình tám tuần.
SQL dùng để làm gì trong công việc phân tích
Khi doanh nghiệp còn nhỏ, dữ liệu thường nằm trong bảng tính và bạn không cần SQL. Khi doanh nghiệp dùng phần mềm bán hàng, phần mềm quản lý kho hay hệ thống đặt hàng trực tuyến, dữ liệu nằm trong cơ sở dữ liệu. Phần mềm thường có sẵn vài báo cáo, nhưng câu hỏi thật của sếp hiếm khi nằm gọn trong báo cáo có sẵn. Lúc đó, hoặc bạn nhờ bộ phận kỹ thuật xuất tệp và chờ, hoặc bạn tự hỏi cơ sở dữ liệu bằng SQL.
Người phân tích dùng SQL chủ yếu để đọc dữ liệu, gần như không bao giờ để sửa hay xoá. Nhiều công ty chỉ cấp quyền đọc cho người phân tích, và đó là điều nên có: bạn không muốn một truy vấn gõ nhầm làm hỏng dữ liệu bán hàng. Nếu được cấp quyền rộng hơn, hãy tự giới hạn mình ở các câu lệnh đọc.
Hiểu SQL còn có một lợi ích ít người nói tới: bạn hiểu cách dữ liệu được ghi lại. Khi biết bảng đơn hàng và bảng chi tiết đơn hàng tách riêng, bạn hiểu vì sao "số đơn" và "số dòng sản phẩm bán ra" là hai con số khác nhau, và không còn nhầm chúng trong báo cáo.
Năm nhóm thao tác đủ cho phần lớn công việc
Bảng dưới mô tả bằng lời từng nhóm thao tác và câu hỏi kinh doanh tương ứng. Tên các mệnh đề viết hoa theo thói quen chung của người dùng SQL; cú pháp chi tiết khác nhau đôi chút giữa các hệ quản trị cơ sở dữ liệu, bạn kiểm tài liệu của hệ thống công ty mình đang dùng.
| Nhóm thao tác | Làm được gì | Câu hỏi kinh doanh ví dụ |
|---|---|---|
| Chọn và lọc (SELECT, WHERE) | Lấy những cột cần, giữ những dòng thoả điều kiện | Danh sách đơn của chi nhánh hai trong tháng trước |
| Gộp nhóm (GROUP BY, COUNT, SUM, AVG) | Tính tổng, đếm, trung bình theo từng nhóm | Doanh thu và số đơn theo từng nhóm hàng |
| Lọc sau khi gộp (HAVING) | Giữ những nhóm thoả điều kiện | Những sản phẩm bán dưới mười đơn trong quý |
| Nối bảng (JOIN) | Ghép thông tin từ nhiều bảng qua mã chung | Doanh thu theo tỉnh của khách, khi tỉnh nằm ở bảng khách hàng |
| Chia bước (truy vấn con, WITH) | Tính một bảng trung gian rồi dùng tiếp | Khách mua lần đầu trong tháng này, rồi xem họ quay lại bao nhiêu |
Sau năm nhóm này, nhóm tiếp theo đáng học là hàm cửa sổ (window function), dùng để tính lũy kế, xếp thứ tự trong nhóm, so với dòng trước. Ví dụ câu hỏi "doanh thu tuần này so với tuần trước của từng chi nhánh" viết gọn hơn hẳn nhờ hàm cửa sổ. Nhưng đừng vội học khi chưa vững năm nhóm đầu.
Lỗi logic hay gặp hơn lỗi cú pháp
Nối bảng làm nhân dòng. Nối bảng đơn hàng với bảng chi tiết đơn hàng rồi cộng cột tổng tiền của đơn: mỗi đơn có ba sản phẩm sẽ bị cộng ba lần. Truy vấn chạy không báo lỗi, con số chỉ đơn giản là sai. Cách phòng: trước và sau khi nối, đếm số dòng và tự giải thích vì sao nó đổi.
Đếm trùng. Đếm số khách bằng cách đếm số dòng trong bảng đơn hàng sẽ ra số đơn chứ không phải số khách. Cần đếm các mã khách khác nhau (COUNT DISTINCT). Lỗi này hay xuất hiện trong báo cáo "số khách mới".
Ô trống bị bỏ qua lặng lẽ. Giá trị rỗng (NULL) không bằng gì cả, kể cả không bằng chính nó. Điều kiện "khác chi nhánh một" sẽ bỏ luôn những đơn không ghi chi nhánh. Luôn kiểm cột lọc có ô trống không và quyết định xử lý thế nào.
Lọc ngày lệch một ngày. Lọc "đến ngày 31" trên cột có cả giờ phút có thể bỏ mất các đơn trong ngày 31. Cách an toàn là lọc "nhỏ hơn ngày đầu tháng sau". Cũng cần biết hệ thống ghi giờ theo múi giờ nào.
Lọc trước hay sau khi gộp. Điều kiện trên từng dòng đặt ở WHERE, điều kiện trên kết quả gộp đặt ở HAVING. Đặt nhầm thì hoặc báo lỗi, hoặc tệ hơn, ra kết quả khác ý định.
Luyện SQL cùng AI: để AI ra đề và soát bài
Sai lầm phổ biến nhất khi học SQL thời có chatbot là hỏi đáp án trước. Bạn sẽ có cảm giác hiểu nhưng không tự viết được. Quy trình dưới đây đảo ngược thứ tự đó.
- Nhờ AI dựng một bộ dữ liệu giả định nhỏ: ba bảng khách hàng, đơn hàng, chi tiết đơn hàng, mỗi bảng vài chục dòng, mô tả rõ từng cột. Yêu cầu nó cố ý cài vài "bẫy" như khách không có tỉnh, đơn bị huỷ, đơn có giờ cuối ngày.
- Đưa dữ liệu đó vào một cơ sở dữ liệu luyện tập trên máy bạn, hoặc một công cụ chạy SQL trực tuyến dành cho học tập. Không dùng dữ liệu thật của công ty để luyện ở nhà.
- Nhờ AI ra mười câu hỏi kinh doanh tăng dần độ khó, chưa kèm đáp án.
- Tự viết truy vấn cho từng câu, chạy, và ghi lại con số kết quả.
- Dán truy vấn của bạn cho AI soát: hỏi nó có lỗi logic nào không, kết quả có bị nhân dòng, đếm trùng không. Yêu cầu nó chỉ ra lỗi chứ chưa viết lại hộ.
- Tự sửa, chạy lại, rồi mới xem một lời giải mẫu để so cách viết.
- Cuối mỗi buổi, ghi vào sổ tay một lỗi mình đã mắc và cách nhận ra nó.
Nhớ rằng AI cũng viết sai SQL, nhất là khi đoán tên cột hoặc độ hạt của bảng. Khi lời giải mẫu của AI ra con số khác bạn, đừng mặc định AI đúng: hãy tính tay trên vài dòng để xem ai sai.
Câu lệnh mẫu để luyện cùng trợ lý AI
Một số câu lệnh mẫu bằng tiếng Việt, bạn chỉnh theo trình độ và bộ dữ liệu luyện tập của mình.
- "Bạn đóng vai người hướng dẫn SQL. Dựng cho mình ba bảng dữ liệu giả định của một cửa hàng đồ chơi: khách hàng, đơn hàng, chi tiết đơn hàng. Mô tả cột và độ hạt từng bảng. Cài ba lỗi dữ liệu thường gặp nhưng chưa nói ra."
- "Ra cho mình năm câu hỏi kinh doanh dùng gộp nhóm và nối bảng trên bộ dữ liệu trên, từ dễ đến khó. Chưa đưa đáp án."
- "Đây là truy vấn mình viết cho câu số ba. Đừng viết lại. Chỉ ra xem có chỗ nào làm nhân dòng, đếm trùng hoặc bỏ sót dòng không, và giải thích vì sao."
- "Giải thích bằng ví dụ đời thường sự khác nhau giữa lọc trước khi gộp và lọc sau khi gộp, rồi cho mình một câu hỏi để tự kiểm tra."
- "Mình hay nhầm độ hạt khi nối bảng. Cho mình ba tình huống giả định, mỗi tình huống hỏi: kết quả sau khi nối có bao nhiêu dòng và vì sao."
Khi đã đi làm và cần nhờ AI viết nháp truy vấn trên dữ liệu thật, chỉ mô tả tên bảng, tên cột và ý nghĩa — không dán dữ liệu khách hàng, và kiểm quy định công ty về việc chia sẻ cấu trúc cơ sở dữ liệu với công cụ bên ngoài.
Khi bắt đầu dùng SQL ở công ty: những thói quen nên có ngay từ đầu
Ngày đầu được cấp quyền truy cập cơ sở dữ liệu, việc nên làm trước tiên không phải là viết truy vấn mà là đi tìm tài liệu mô tả bảng và người hiểu dữ liệu. Hỏi những câu cơ bản: bảng nào là nguồn chính của doanh thu, đơn huỷ được ghi thế nào, đơn trả hàng nằm ở đâu, dữ liệu được cập nhật lúc nào trong ngày. Một buổi hỏi chuyện như vậy tránh được nhiều tuần báo cáo sai.
Thói quen thứ hai là chạy thử trên phạm vi nhỏ. Trước khi tính cả năm, chạy cho một ngày, xem kết quả có khớp với báo cáo có sẵn của phần mềm bán hàng không. Nếu lệch, tìm ra lý do trước khi mở rộng. Thói quen này cũng giúp bạn không gửi những truy vấn quá nặng làm chậm hệ thống của người khác.
Thói quen thứ ba là lưu và ghi chú truy vấn. Mỗi truy vấn dùng cho báo cáo nên có vài dòng chú thích ở đầu: trả lời câu hỏi gì, ai yêu cầu, giả định gì về đơn huỷ và trả hàng, ngày viết. Ba tháng sau khi sếp hỏi vì sao con số khác lần trước, bạn sẽ biết đường lần lại.
Cuối cùng, tôn trọng quyền truy cập. Bảng khách hàng có số điện thoại và địa chỉ; bảng nhân sự có lương. Được nhìn thấy không có nghĩa là được dùng cho mọi mục đích. Chỉ lấy những cột cần cho câu hỏi, và khi xuất dữ liệu ra ngoài cơ sở dữ liệu, bỏ các cột định danh nếu câu hỏi không cần đến chúng.
Lộ trình luyện tám tuần cho người đã quen bảng tính
Mỗi tuần khoảng năm đến bảy giờ, chia thành các buổi ngắn. Lộ trình là gợi ý; nếu tuần nào chưa vững thì kéo dài, đừng vội chuyển.
| Tuần | Nội dung | Bài tự kiểm cuối tuần |
|---|---|---|
| 1 | Cơ sở dữ liệu quan hệ là gì, bảng, khoá, độ hạt; chọn và lọc | Liệt kê đơn theo điều kiện ngày, chi nhánh, trạng thái |
| 2 | Sắp xếp, giới hạn số dòng, xử lý ô trống | Mười đơn giá trị lớn nhất, đếm đơn không ghi chi nhánh |
| 3 | Gộp nhóm, các hàm đếm, cộng, trung bình | Doanh thu, số đơn, giá trị đơn trung bình theo tháng |
| 4 | Lọc sau khi gộp, đếm giá trị khác nhau | Sản phẩm bán chậm, số khách khác nhau theo tháng |
| 5 | Nối hai bảng, kiểm số dòng trước và sau | Doanh thu theo tỉnh của khách |
| 6 | Nối ba bảng, các kiểu nối khi thiếu dữ liệu | Sản phẩm chưa từng bán được đơn nào |
| 7 | Truy vấn nhiều bước bằng bảng trung gian | Khách mua lần đầu tháng này và tỉ lệ quay lại |
| 8 | Làm trọn một câu hỏi phân tích từ đầu đến cuối | Viết nửa trang kết luận kèm truy vấn và giả định |
Bài tuần tám có thể trở thành một dự án trong hồ sơ của bạn nếu bạn trình bày rõ câu hỏi, cách làm và kết luận. Bài về hồ sơ dự án trong danh mục này có hướng dẫn cụ thể.
Câu hỏi thường gặp
Người không học công nghệ thông tin có học SQL được không?
Được. SQL dùng để đọc dữ liệu có cú pháp gần với câu tiếng Anh đơn giản, và các thao tác chính giống những gì bạn đã làm trong bảng tính như lọc, gộp nhóm, tra cứu sang bảng khác. Nhiều người từ kế toán, marketing học SQL trong vài tháng đủ để dùng trong công việc.
Học SQL mất bao lâu thì đi làm được?
Với người đã quen bảng tính, khoảng hai đến ba tháng luyện đều đặn mỗi tuần vài giờ là đủ để viết truy vấn gộp nhóm, nối bảng phục vụ phân tích. Mức thành thạo với dữ liệu lớn và truy vấn phức tạp đến dần từ công việc thật.
Có AI viết hộ SQL rồi thì có cần học không?
Vẫn cần, vì bạn phải đọc hiểu được truy vấn để biết nó có nhân dòng, đếm trùng hay lọc nhầm ngày không. Truy vấn sai vẫn chạy và trả ra con số, chỉ là con số sai. Người không hiểu SQL không có cách nào phát hiện điều đó.
Nên học hệ quản trị cơ sở dữ liệu nào?
Phần cốt lõi của SQL giống nhau giữa các hệ quản trị phổ biến, nên bạn có thể học trên bất kỳ hệ nào miễn phí và dễ cài. Khi đi làm, chỉ cần làm quen thêm vài khác biệt nhỏ về hàm ngày tháng, chuỗi của hệ thống công ty đang dùng.
Luyện SQL bằng dữ liệu công ty có được không?
Không nên mang dữ liệu công ty về máy cá nhân hay đưa lên công cụ bên ngoài để luyện tập. Hãy luyện trên dữ liệu giả định hoặc dữ liệu công khai. Nếu muốn luyện trên hệ thống công ty, hỏi quản lý về môi trường thử nghiệm và quyền truy cập phù hợp.
Sau SQL nên học gì tiếp?
Tuỳ hướng đi. Nếu muốn làm báo cáo và dashboard, học công cụ dashboard và cách mô hình hoá dữ liệu cho báo cáo. Nếu muốn phân tích sâu hơn hoặc tự động hoá, học thêm một ngôn ngữ lập trình dùng cho dữ liệu. Dù hướng nào, thống kê cơ bản vẫn nên học song song.