Các hàm LEAD và LAG
Thuộc phần Kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 61 trên 72.
Các hàm LEAD và LAG cho phép chúng ta truy cập 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ệ doanh thu của công ty ở hàng hiện tại so với một tháng trước, ta có thể lấy giá trị của tháng trước:
| id | revenue | month |
| 1 | 532 | 5 |
| 2 | 492 | 6 |
| 3 | 393 | 7 |
| 4 | 723 | 8 |
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY idThao tác này sẽ tạo bảng sau:
| id | revenue | prev_month_revenue |
| 1 | 532 | |
| 2 | 492 | 532 |
| 3 | 393 | 492 |
| 4 | 723 | 393 |
Theo cách này, chúng ta có thể tính tỷ lệ prev_month_revenue/revenue.
Nếu thay vào đó dùng hàm LEAD, hàm này sẽ lấy doanh thu của tháng tiếp theo ở mỗi hàng:
SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id| id | revenue | next_month_revenue |
| 1 | 532 | 492 |
| 2 | 492 | 393 |
| 3 | 393 | 723 |
| 4 | 723 |
Thử thách
DễCác bảng và cột có sẵn:
air_conditioners:id,efficiency,strength,month
So sánh hiệu suất của từng máy điều hòa với máy điều hòa trước đó.
Viết một truy vấn (query) hiển thị hiệu suất của từng máy điều hòa cùng với hiệu suất của máy điều hòa được lắp đặt trước đó (dựa trên id). Đồng thời, tính độ chênh lệch hiệu suất giữa máy điều hòa hiện tại và máy trước đó. Sắp xếp kết quả theo id và efficiency theo thứ tự tăng dần.
Các cột đầu ra dự kiến:
idefficiencyprevious_efficiency(dùng LAG)efficiency_difference(hiệu suất hiện tại - hiệu suất trước đó)
Cuối cùng, bọc truy vấn và lọc bỏ hàng đầu tiên, vì previous_efficiency (và do đó cả efficiency_difference) không có giá trị, tức là NULL:
SELECT * FROM (
-- Your query here
)
WHERE previous_efficiency IS NOT NULLTự làm thử
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức cơ bản
2Điều kiện
Kiến thức cơ bản về điều kiệnTừ khóa ANDTừ khóa ORTừ khóa NOTKết hợp nhiều điều kiệnDấu ngoặc đơnGiá trị logic8Thống kê
Hàm tổng hợp tích hợp sẵn phần 1Hàm tổng hợp tích hợp sẵn phần 2Nhóm dữ liệu phần 1Nhóm dữ liệu phần 2Truy vấn con phần 1Truy vấn con phần 2Ôn tập: cửa hàng Total GainÔn tập: cửa hàng xe tay gaÔn tập: quán cà phê11Hàm cửa sổ, phần 1
Hàm ROW_NUMBERTiêu chí ORDER BYTiêu chí PARTITION BYPARTITION và ORDERCác hàm LEAD và LAGÔn tập: LEAD và LAGÔn tập: hình ảnhÔn tập: hộp3Định dạng giá trị trả về cụ thể
Giá trị nullSắp xếp kết quả phần 1Sắp xếp kết quả phần 2Ôn tập: Công ty an ninh mạngGiới hạn số bản ghiÔn tập: Nhà máy sản xuất xe6Thử thách nhập môn
Ôn tập: bầu cử quốc hộiÔn tập: cảnh sát bắt giữ tội phạmÔn tập: vật chứa đồ uống tại quầy barÔn tập: kỹ sư tạo cột mớiTự luyện tập: Playground SQL