Window function — ROW_NUMBER
Window function tính toán trên một 'cửa sổ' các dòng liên quan nhưng vẫn giữ nguyên từng dòng — khác với GROUP BY.
Cú pháp: ROW_NUMBER() OVER (PARTITION BY cột ORDER BY cột2).
PARTITION BY: chia thành các nhóm (giống GROUP BY nhưng không gộp dòng).ORDER BYtrong OVER: thứ tự đánh số bên trong mỗi nhóm.
Ứng dụng
Lấy 'người lương cao nhất mỗi phòng ban', đánh hạng, so với dòng trước/sau (LAG/LEAD)...
Kết quả giữ nguyên số dòng, thêm cột thứ hạng rn cho mỗi phòng ban.Thuật ngữ (di chuột để xem giải thích)
Đang tải dữ liệu mẫu…
Cú pháp: ROW_NUMBER() OVER (PARTITION BY cột ORDER BY cột2).
PARTITION BY: chia thành các nhóm (giống GROUP BY nhưng không gộp dòng).ORDER BYtrong OVER: thứ tự đánh số bên trong mỗi nhóm.
Ứng dụng
Lấy 'người lương cao nhất mỗi phòng ban', đánh hạng, so với dòng trước/sau (LAG/LEAD)...
Kết quả giữ nguyên số dòng, thêm cột thứ hạng rn cho mỗi phòng ban.Thuật ngữ (di chuột để xem giải thích)
Đang tải dữ liệu mẫu…
Đang tải trình soạn thảo…
Chạy truy vấn để xem kết quả tại đây.
Đánh ROW_NUMBER cho users theo city (PARTITION BY city) sắp theo age giảm dần, cột tên rn. Trả về name, city, rn.
Đang tải trình soạn thảo…
Chỉ lấy người có rn = 1 mỗi department (lương cao nhất). Dùng subquery hoặc CTE bọc ROW_NUMBER.
Đang tải trình soạn thảo…
- Chạy thử truy vấn mẫu
- Hoàn thành bài tập (0/2)