Truy cập giá trị từ hàng trước
Bằng cách dùng hàm LAG() trong một truy vấn, bạn có thể truy cập các hàng đứng trước hàng hiện tại.
Cú pháp như sau:
LAG(numeric_expression) OVER ([PARTITION BY column] ORDER BY column)
Trong bài tập này, bạn sẽ dùng hàm này trong truy vấn. Bạn sẽ phân tích điểm đánh giá của các thanh sô cô la do một công ty tên là "Fruition" sản xuất.
Công ty này sản xuất sô cô la với cacao đến từ nhiều khu vực khác nhau trên thế giới.
Bạn muốn kiểm tra liệu có mối tương quan giữa tỷ lệ cacao và điểm số nhận được đối với các thanh đến từ cùng một địa điểm hay không. Vì vậy, bạn sẽ so sánh tỷ lệ cacao của mỗi thanh với tỷ lệ của thanh có điểm đánh giá ngay trước đó. Sau đó, bạn sẽ tính chênh lệch giữa các giá trị này và diễn giải kết quả.
Bài tập này là một phần của khóa học
Các hàm thao tác dữ liệu trong SQL Server
Hướng dẫn bài tập
- Tạo một cột mới hiển thị tỷ lệ cacao của thanh sô cô la có điểm thấp hơn, với cacao đến từ cùng một địa điểm (cùng
broad_bean_origin). - Tạo một cột mới với chênh lệch giữa tỷ lệ cacao của thanh hiện tại và tỷ lệ của thanh trước đó.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
SELECT
broad_bean_origin AS bean_origin,
rating,
cocoa_percent,
-- Retrieve the cocoa % of the bar with the previous rating
___(___)
OVER(___ broad_bean_origin ORDER BY ___) AS percent_lower_rating
FROM ratings
WHERE company = 'Fruition'
ORDER BY broad_bean_origin, rating ASC;