SQL Nâng cao
🎯 Mục tiêu bài học
Sau bài này, bạn sẽ:
- Hiểu khái niệm Window Frame và cách SQL tính toán trên từng dòng
- Áp dụng thành thạo ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, SUM OVER
- Viết được CTE và CTE đệ quy cho truy vấn phức tạp
- Phân biệt khi nào dùng Subquery, CTE, hay JOIN
- Tối ưu truy vấn bằng EXPLAIN ANALYZE và đánh chỉ mục
1. Hàm cửa sổ (Window Functions)
1.1 Giới thiệu hàm cửa sổ
Window Functions cho phép tính toán trên một "cửa sổ" (window) của rows liên quan đến row hiện tại.
1-- Syntax cơ bản2SELECT 3 column1,4 AGG_FUNCTION(column2) OVER (5 PARTITION BY column36 ORDER BY column47 ROWS/RANGE BETWEEN ... AND ...8 ) as window_result9FROM table;1.2 Các loại hàm cửa sổ
| Loại | Hàm | Mục đích |
|---|---|---|
| Tổng hợp | SUM, AVG, COUNT, MIN, MAX | Tính toán trên cửa sổ |
| Xếp hạng | ROW_NUMBER, RANK, DENSE_RANK |
