Hàm LEAD và LAG
Bài học 6 trên 13 trong khóa học SQL nâng cao của Coddy.
Các hàm Lead và Lag cho phép chúng ta lấy giá trị của hàng hiện tại, lùi lại n bước hoặc tiến lên n bước
Ví dụ: nếu muốn tính tỷ lệ giữa doanh thu của công ty ở hàng hiện tại và một tháng trước đó, ta lấy giá trị của hai tháng trước:
| id | revenue | month |
| 1 | 532 | 5 |
| 2 | 492 | 6 |
| 3 | 393 | 7 |
| 4 | 723 | 8 |
SELECT id, revenue, LAG(month, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY idLệnh này sẽ tạo bảng sau:
| id | revenue | prev_month_revenue |
| 1 | 532 | |
| 2 | 492 | 532 |
| 3 | 393 | 492 |
| 4 | 723 | 723 |
Bằng cách này, ta có thể tính tỷ lệ prev_month_revenue/revenue.
Nếu thay vào đó ta dùng hàm LEAD, hàm sẽ lấy doanh thu của tháng tiếp theo cho từng hàng:
| id | revenue | next_month_revenue |
| 1 | 532 | 492 |
| 2 | 492 | 393 |
| 3 | 393 | 723 |
| 4 | 723 |
Thử thách
DễMáy điều hòa có thể rất đắt. Theo thời gian, chúng trở nên hiệu quả hơn và mạnh hơn, nhưng chúng ta không thể nhận thấy rõ những cải tiến này qua từng ngày. Ta cần nhìn rộng hơn để thấy những cải tiến theo thời gian.
Để làm điều này, hãy tính giá trị trung bình của efficiency và strength của máy điều hòa theo từng id và month. Sau đó, lấy tỷ lệ giữa efficiency và strength của tháng hiện tại và hai tháng trước đó. Cuối cùng, tính tỷ lệ giữa tỷ lệ của tháng hiện tại và tỷ lệ của hai tháng trước đó. Trả về kết quả có tỷ lệ lớn hơn 1.5. Đặt tên cột này là ratio_two_months.
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