Tìm Khoảng trống Trình tự trong Bảng trong Oracle
Vấn đềBạn muốn tìm tất cả các khoảng trống trong dãy số hoặc ngày và giờ trong dữ liệu của mình. Khoảng trống có thể
nằm trong ngày được ghi lại cho một hành động nhất định hoặc trong một số dữ liệu khác có tính chất liên tiếp về mặt logic.
Giải pháp
Các hàm LAG và LEAD OLAP của Oracle cho phép bạn so sánh hàng kết quả hiện tại với một hàng trước.
Định dạng chung của LAG trông giống như thế này
Trễ (cột hoặc biểu thức, độ lệch hàng trước, mặc định cho hàng đầu tiên)
Cột hoặc biểu thức là giá trị được so sánh với các giá trị trễ (trước). Khoảng chênh lệch hàng
trước cho biết có bao nhiêu hàng trước hàng hiện tại mà LAG sẽ hoạt động. Chúng tôi đã sử dụng "1" trong
danh sách sau để có nghĩa là hàng trước hàng hiện tại. Giá trị mặc định cho LAG cho biết giá trị
nào được sử dụng làm tiền lệ cho hàng đầu tiên, vì không có hàng nào là số 0 trong bảng hoặc kết quả. Chúng tôi hướng dẫn Oracle
sử dụng 0 làm giá trị neo mặc định, để xử lý trường hợp chúng tôi tìm kiếm ngày trước ngày đầu tiên của tháng
.
Có thể sử dụng phương pháp tiếp cận bí danh truy vấn WITH trong hầu hết các tình huống mà truy vấn con được sử dụng, để
định vị lại chi tiết truy vấn phụ trước truy vấn chính. Điều này hỗ trợ khả năng đọc và cấu trúc lại mã nếu
yêu cầu vào một ngày sau đó.
Công thức này tìm kiếm những khoảng trống trong chuỗi ngày mà các đơn đặt hàng được thực hiện trong tháng
11 năm 1999:
với ngày bán hàng là
(chọn trích xuất (ngày từ order_date) tiếp theo
từ oe.orders
trong đó order_date từ '01 -NOV-1999 'đến '30 -NOV-1999')
chọn pres_sale, next_sale
từ các ngày bán hàng
ở đâu next_sale - prev_sale> 1
đơn đặt hàng theo giá trị phổ biến;
Truy vấn của chúng tôi cho thấy khoảng cách giữa các lần bán hàng trong tháng 11 năm 1999.
PREV_SALE NEXT_SALE
---------- ----------
1 10
10 14
15 19
20 22 Kết quả cho thấy rằng sau khi một đơn hàng được ghi vào ngày đầu tiên của tháng, không có đơn hàng nào tiếp theo
được ghi nhận cho đến ngày 10. Sau đó, khoảng cách bốn ngày tiếp theo là ngày 14, v.v. Một người quản lý bán hàng sắc sảo
có thể sử dụng dữ liệu này để hỏi nhóm bán hàng đang làm gì vào những ngày trống đó và tại sao không có đơn đặt hàng nào
đến!