Chuyển đến nội dung chính
Mô-đun 13 · Bài học 2 trong tổng số 450/57 trong khóa học~15 min
Bài học theo mô-đun (2/4)

Nhóm với PHẦN THAM GIA THEO

Nhóm với PHẦN THAM GIA THEO

Việc thực hiện các phép tính tổng thể trên mỗi hàng là điều hữu ích nhưng thường là chưa đủ. Chúng tôi có thể muốn tính mỗi danh mục hoặc mỗi khách hàng trung bình, trong khi vẫn giữ chi tiết ban đầu trên mỗi hàng.

Đây là nơi PARTITION BY bên trong mệnh đề OVER(...) phát huy tác dụng.

Cách thức hoạt động của PARTITION BY

Về mặt khái niệm, nó hoạt động tương tự như GROUP BY, nhưng thay vì thu gọn các hàng trong kết quả, nó chỉ xác định ranh giới của "cửa sổ" dữ liệu mà hàm sẽ hoạt động trên đó để tính toán kết quả cho một hàng.

SQL
SELECT
  product_name,
  category_id,
  price,
  AVG(price) OVER(PARTITION BY category_id) AS cat_avg_price
FROM products;

Mỗi hàng sản phẩm có thông tin chi tiết riêng và cột cat_avg_price sẽ hiển thị giới hạn trung bình đối với các sản phẩm trong cùng danh mục.

tập thể dục#sql.m13.l2.e1
Nỗ lực: 0Đang tải…

Từ bảng 'sản phẩm', trích xuất 'id', 'category_id' và 'price'. Thêm cột 'category_total' tính toán SUM của 'price' cho mỗi 'category_id' bằng cách sử dụng các hàm cửa sổ.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng SUM(giá) OVER(PARTITION BY Category_id).

Giải pháp khả dụng sau 3 lần thử

tập thể dục#sql.m13.l2.e2
Nỗ lực: 0Đang tải…

Từ bảng 'đánh giá', hiển thị 'product_id', 'xếp hạng' và 'avg_product_rated' (xếp hạng trung bình được phân chia theo sản phẩm). Hiển thị tất cả các hàng.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng AVG(xếp hạng) và PHẦN THAM GIA THEO sản phẩm_id. Truyền nó tới NUMERIC nếu cần.

Giải pháp khả dụng sau 3 lần thử