Các khái niệm SQL nâng cao

I. Tổng quan về SQL nâng cao

Ngoài các câu lệnh cơ bản như SELECT, INSERT, UPDATE, DELETE, SQL nâng cao giúp thực hiện những truy vấn phức tạp, làm việc với nhiều bảng dữ liệu, tối ưu hóa hiệu suất, và phân tích sâu dữ liệu. Đây là kiến thức quan trọng giúp Business Analyst (BA) khai thác dữ liệu hiệu quả để đưa ra các báo cáo, phân tích nghiệp vụ sâu.


II. Các khái niệm SQL nâng cao quan trọng

1. JOIN – Kết hợp dữ liệu từ nhiều bảng

Khái niệm:

Kết hợp các bảng để lấy dữ liệu liên quan.

Các loại JOIN:

Loại JOIN

Ý nghĩa

INNER JOIN

Chỉ lấy các bản ghi khớp giữa 2 bảng.

LEFT JOIN

Lấy toàn bộ bản ghi từ bảng bên trái + khớp từ bảng phải.

RIGHT JOIN

Lấy toàn bộ bản ghi từ bảng bên phải + khớp từ bảng trái.

FULL OUTER JOIN

Lấy tất cả bản ghi từ cả 2 bảng.

Ví dụ INNER JOIN:

sqlCopyEditSELECT khach_hang.ten, don_hang.ngay_dat
FROM khach_hang
INNER JOIN don_hang ON khach_hang.id = don_hang.khach_hang_id;

2. Subquery (Truy vấn lồng nhau)

Khái niệm:

Truy vấn bên trong một truy vấn khác để lọc hoặc tính toán dữ liệu.

Ví dụ:

sqlCopyEditSELECT ten, tong_tien
FROM don_hang
WHERE tong_tien > (SELECT AVG(tong_tien) FROM don_hang);

👉 Lấy đơn hàng có giá trị lớn hơn trung bình.


3. CTE (Common Table Expression) – Biểu thức bảng chung

Khái niệm:

Tạm lưu trữ một bảng ảo để dễ quản lý các truy vấn phức tạp.

Cú pháp:

sqlCopyEditWITH doanh_thu_theo_thang AS (
    SELECT thang, SUM(tong_tien) AS tong_doanh_thu
    FROM don_hang
    GROUP BY thang
)
SELECT * FROM doanh_thu_theo_thang;

4. Window Function (Hàm cửa sổ)

Khái niệm:

Hàm thực hiện tính toán trên tập con dữ liệu mà không gom nhóm như GROUP BY.

Ví dụ:

sqlCopyEditSELECT ten_khach_hang, tong_tien,
       RANK() OVER (ORDER BY tong_tien DESC) AS xep_hang
FROM don_hang;

👉 Xếp hạng khách hàng theo giá trị đơn hàng.

Một số hàm phổ biến:

Hàm

Ý nghĩa

ROW_NUMBER()

Đánh số thứ tự bản ghi.

RANK()

Xếp hạng có thứ tự, cho phép đồng hạng.

DENSE_RANK()

Xếp hạng liên tục, không bỏ số.

SUM() OVER()

Tổng cộng dồn theo nhóm dữ liệu.


5. Index và tối ưu hóa truy vấn

Khái niệm:

Indexchỉ mục giúp truy vấn dữ liệu nhanh hơn, đặc biệt với bảng lớn.

Lợi ích:

  • Giảm thời gian truy vấn.

  • Cải thiện hiệu suất hệ thống.

Ví dụ tạo Index:

sqlCopyEditCREATE INDEX idx_khach_hang_ten ON khach_hang(ten);

6. Stored Procedure và Function (Thủ tục và hàm)

Khái niệm:

  • Stored Procedure: Tập hợp các câu lệnh SQL thực thi như 1 chương trình con.

  • Function: Hàm thực hiện tính toán và trả về giá trị.

Ví dụ Stored Procedure:

sqlCopyEditCREATE PROCEDURE lay_don_hang_khach_hang @id_khach_hang INT
AS
BEGIN
    SELECT * FROM don_hang WHERE khach_hang_id = @id_khach_hang;
END;

7. Transaction – Giao dịch

Khái niệm:

Nhóm nhiều lệnh SQL thành một đơn vị công việc để đảm bảo dữ liệu nhất quán.

Ví dụ:

sqlCopyEditBEGIN TRANSACTION;
UPDATE tai_khoan SET so_du = so_du - 500 WHERE id = 1;
UPDATE tai_khoan SET so_du = so_du + 500 WHERE id = 2;
COMMIT; -- hoặc ROLLBACK nếu có lỗi

III. Ứng dụng SQL nâng cao trong công việc Business Analyst

Tình huống thực tế

Công cụ SQL sử dụng

Phân tích doanh thu theo từng khách hàng, tháng

JOIN, CTE, Window Function

Tìm đơn hàng có giá trị cao nhất mỗi tháng

Subquery, Window Function (RANK, ROW_NUMBER)

So sánh doanh thu giữa các vùng

GROUP BY, JOIN, CTE

Tối ưu hóa báo cáo doanh thu khi dữ liệu lớn

Index, tối ưu hóa JOIN

Thực hiện batch update dữ liệu nhiều bảng liên quan

Transaction, Stored Procedure


IV. Kết luận

  • SQL nâng cao giúp Business Analyst khai thác dữ liệu sâu, tạo các báo cáo phức tạp và hỗ trợ các quyết định chiến lược.

  • Việc thành thạo JOIN, Subquery, CTE, Window Function, Transaction, Index giúp BA làm việc hiệu quả với đội ngũ Developer, Data Engineer, Data Analyst.

  • Đây là kỹ năng cần thiết nếu BA làm việc trong các dự án liên quan đến phân tích dữ liệu, ERP, CRM, BI systems.

Last updated