Chức năng lãnh đạo máy chủ SQL
Hàm dẫn đầu trong SQL Server là một hàm phân tích cho phép bạn truy cập dữ liệu từ một hàng tiếp theo trong cùng một tập hợp kết quả mà không cần tự nối.
Hàm này cho phép bạn truy cập một hàng ở một độ lệch nhất định trước hàng hiện tại. Ví dụ: sử dụng chức năng dẫn đầu, bạn có thể tìm thấy hàng ngay sau hàng hiện tại, hàng thứ 10 kể từ hàng hiện tại, v.v.
Chức năng này thúc đẩy các nhà phát triển cơ sở dữ liệu thực hiện so sánh hàng mà không cần thực hiện các tác vụ phức tạp như nối, sử dụng dạng xem, v.v.
Cú pháp hàm
Sau đây mô tả cú pháp của hàm lead() trong SQL Server:
DẪN ( scalar_expression [ ,offset ] , [ default ] )
QUÁ ( [ partition_by_clause ] order_by_clause )
Danh sách tiếp theo là các đối số được hỗ trợ và chức năng của chúng:
- scalar_expression – đối số này biểu thị giá trị trả về dựa trên phần bù đã xác định. Đây có thể là một biểu thức của bất kỳ loại nào trả về một giá trị. Tuy nhiên, giá trị của scalar_expression không thể là một hàm phân tích/cửa sổ khác.
- offset – điều này đặt số lượng hàng từ vị trí hàng hiện tại mà giá trị được tìm nạp. Theo mặc định, hàm sẽ lấy hàng ngay lập tức tính từ hàng hiện tại. Tương tự, giá trị của tham số offset không thể là hàm giải tích hoặc số nguyên âm.
- mặc định - tham số này đặt giá trị mặc định nếu giá trị bù được cung cấp nằm ngoài phạm vi của phân vùng đích. Theo mặc định, hàm sẽ trả về NULL.
- PHẦN THAM GIA BỞI – mệnh đề partition_by xác định các quy tắc phân chia tập kết quả thành các phần khác nhau. Sau đó, chức năng này được áp dụng cho từng phân vùng kết quả.
- ORDER BY – điều này xác định thứ tự hợp lý trong đó các hàng trong mỗi phân vùng được áp dụng.
Hàm trả về kiểu dữ liệu được xác định trong biểu_thức vô hướng. Nếu giá trị trả về là NULL, hàm sẽ trả về NULL.
Dữ liệu mẫu
Hãy để chúng tôi sử dụng một số cơ sở dữ liệu mẫu để minh họa rõ nhất cách sử dụng hàm dẫn đầu. Đầu tiên, sử dụng các truy vấn như hình dưới đây:
DROP DATABASE NẾU EXISTS hàng tồn kho;
TẠO kho cơ sở dữ liệu;
SỬ DỤNG hàng tồn kho;
THẢ BẢNG NẾU TỒN sản phẩm;
TẠO BẢNG sản phẩm (
id int khóa chính nhận dạng không rỗng,
product_name varchar(100),
nhà sản xuất varchar(50),
số lượng int không null,
giá int mặc định 0,
bit trong kho
);
chèn vào sản phẩm(product_name, nhà sản xuất, số lượng, giá, in_stock)
các giá trị ('Apple iPad Air', 'Apple', 100, 569,99, 1),
('Samsung Galaxy Z Flip 4', 'Samsung', 302, 1569.00, 1),
('Sony Playstation 5', 'Sony', 500, 499,99, 1),
('Samsung Galaxy Watch-5 Pro', 'Samsung', 600, 209/.99, 1),
('Apple Watch Series 6', 'Apple', 459, 379.90, 1),
('Apple AirPods Pro', 'Apple', 200, 199,99, 1),
('55' TV thông minh OLED 4K loại S95B', 'Samsung', 900, 1999,90, 1),
('Màn hình chơi game màn hình cong Mini-LED của Odyssey Ark Quantum', 'Samsung', 50, 2999.90, 1);
Bảng kết quả như hình:
Ví dụ 1 – Sử dụng Hàm lead() của SQL Server trên Tập kết quả
Ví dụ dưới đây sử dụng hàm lead() để trả về giá của sản phẩm tiếp theo.
lựa chọntên sản phẩm,
nhà chế tạo,
số lượng,
giá bán,
chì (giá,
1) qua (
đặt hàng theo số lượng)
từ
Mỹ phẩm;
Bảng kết quả:
Vì không có hàng nào từ cột cuối cùng nên hàm trả về NULL.
Ví dụ 2 – Sử dụng hàm lead() của SQL Server trên một tập hợp phân vùng
Chúng tôi cũng có thể tìm nạp sản phẩm tiếp theo trong một phân vùng nhất định. Ví dụ: chúng ta có thể phân vùng dữ liệu trên dựa trên nhà sản xuất và áp dụng hàm lead() trong mỗi phân vùng
Một ví dụ minh họa như hình:
lựa chọntên sản phẩm,
nhà chế tạo,
số lượng,
giá bán,
chì (giá,
1) qua (
phân vùng theo nhà sản xuất
đặt hàng theo số lượng)
từ
Mỹ phẩm;
Truy vấn ở trên sẽ phân chia các hàng dựa trên nhà sản xuất và lấy giá tiếp theo cho các giá trị trong mỗi phân vùng.
Trong trường hợp này, có ba phân vùng.
Sự kết luận
Trong bài đăng này, bạn đã hiểu các khối xây dựng của hàm lead() trong SQL Server. Bạn cũng đã học cách sử dụng hàm lead() trên tập hợp kết quả và phân vùng.