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.
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ừ 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ổ.
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ừ 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.
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ử