Tiêu chí PARTITION BY
Bài học 5 trên 13 trong khóa học SQL nâng cao của Coddy.
Một tùy chọn khác của OVER () là PARTITION BY
Nó cho phép chúng ta đánh số các hàng riêng biệt cho từng nhóm
Ví dụ:
| id | type |
| 132 | t1 |
| 52 | t2 |
| 92 | t1 |
| 154 | t3 |
| 198 | t1 |
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type) as row_num
FROM table1Câu lệnh này sẽ tạo một cột đánh số các hàng trong từng loại:
| id | type | row_num |
| 132 | t1 | 1 |
| 52 | t2 | 1 |
| 92 | t1 | 2 |
| 154 | t3 | 1 |
| 198 | t1 | 3 |
id 92 có row_num là 2 vì đây là hàng thứ hai của type t1
Chúng ta cũng có thể kết hợp PARTITION BY với ORDER BY:
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type ORDER BY id) as row_num
FROM table1Câu lệnh này sẽ đánh số các hàng theo thứ tự tăng dần của id trong từng loại:
| id | type | row_num |
| 132 | t1 | 2 |
| 52 | t2 | 1 |
| 92 | t1 | 1 |
| 154 | t3 | 1 |
| 198 | t1 | 3 |
Bây giờ id 132 có row_num là 2 vì giá trị này lớn hơn 92 và nhỏ hơn 198.
Chúng ta thậm chí có thể chỉ định nhiều cột bên trong PARTITION BY:
ROW_NUMBER() OVER (PARTITION BY type, hue)Thử thách
DễMột nhà máy đang sản xuất cửa. Nhà máy cần đánh số các cửa có publication_year trước năm 2000 theo từng country và color. Đặt tên cột này là row_num.
Bỏ qua những cửa không có thông số kỹ thuật. Sắp xếp kết quả theo thứ tự tăng dần của id.
Tự làm thử
Tất cả bài học trong SQL nâng cao
4Tổng kết
Thử thách cuối cùng #12Hàm cửa sổ phần 1
Hàm ROW_NUMBERTiêu chí ORDER BYTiêu chí PARTITION BYHàm LEAD và LAGThử thách ôn tập #1Thử thách ôn tập #2Tự luyện tập: Trình biên dịch Python online