Menu
CoddyTech

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ụ:

idtype
132t1
52t2
92t1
154t3
198t1
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type) as row_num
FROM table1

Câu lệnh này sẽ tạo một cột đánh số các hàng trong từng loại:

idtyperow_num
132t11
52t21
92t12
154t31
198t13

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 table1

Câ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:

idtyperow_num
132t12
52t21
92t11
154t31
198t13

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)
challenge icon

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

Tự luyện tập: Trình biên dịch Python online