LAG (previous_end_date) and LEAD ((Next_end_date))

 NGuồn: chat GPT

LAG() là một hàm cửa sổ (window function) trong SQL được sử dụng để truy cập giá trị của một dòng trong một cột trong dòng trước đó (dòng liền trước) trong kết quả truy vấn. Hàm LAG() rất hữu ích khi bạn muốn so sánh giá trị của một dòng với giá trị của dòng trước đó trong cùng một cột.

Cú pháp chung của hàm LAG() là:

sql
LAG(column_name, offset, default_value) OVER (PARTITION BY partition_column ORDER BY order_column)
Save to grepper
  • column_name: Tên của cột bạn muốn truy cập giá trị của dòng trước đó.
  • offset: Số nguyên dương xác định khoảng cách từ dòng hiện tại đến dòng trước đó. Mặc định là 1 nếu không được chỉ định. Ví dụ, LAG(column_name, 2) sẽ truy cập giá trị của cột column_name ở hai dòng trước đó.
  • default_value: Giá trị mặc định được trả về nếu không có dòng trước đó để truy cập hoặc nếu offset lớn hơn số dòng có sẵn để truy cập. Điều này là tùy chọn.
  • PARTITION BY partition_column: Được sử dụng để chia dữ liệu thành các phần (partitions) riêng biệt dựa trên giá trị của một cột. Nếu không sử dụng phân vùng, hàm LAG() sẽ áp dụng cho toàn bộ dữ liệu.
  • ORDER BY order_column: Sắp xếp dữ liệu theo cột này trước khi áp dụng hàm LAG(). Các dòng sẽ được xác định theo thứ tự của cột này.

Dưới đây là một ví dụ sử dụng LAG() để truy cập giá trị của cột "sales" của dòng trước đó trong một bảng "sales_data":

sql
SELECT date, sales, LAG(sales) OVER (ORDER BY date) AS previous_sales FROM sales_data;
Save to grepper

Trong truy vấn này, chúng ta truy cập giá trị của cột "sales" của dòng trước đó dựa trên thứ tự ngày ("date"). Kết quả sẽ chứa các cột "date", "sales" và "previous_sales" với "previous_sales" là giá trị của "sales" của dòng trước đó.



LEAD() là một hàm cửa sổ (window function) trong SQL tương tự như LAG(), nhưng nó cho phép bạn truy cập giá trị của một dòng trong một cột trong dòng tiếp theo (dòng liền sau) trong kết quả truy vấn. Trong khi LAG() truy cập giá trị của dòng trước đó, LEAD() truy cập giá trị của dòng tiếp theo.

Cú pháp chung của hàm LEAD() tương tự như LAG():

sql
LEAD(column_name, offset, default_value) OVER (PARTITION BY partition_column ORDER BY order_column)
Save to grepper
  • column_name: Tên của cột bạn muốn truy cập giá trị của dòng tiếp theo.
  • offset: Số nguyên dương xác định khoảng cách từ dòng hiện tại đến dòng tiếp theo. Mặc định là 1 nếu không được chỉ định. Ví dụ, LEAD(column_name, 2) sẽ truy cập giá trị của cột column_name ở hai dòng tiếp theo.
  • default_value: Giá trị mặc định được trả về nếu không có dòng tiếp theo để truy cập hoặc nếu offset lớn hơn số dòng có sẵn để truy cập. Điều này là tùy chọn.
  • PARTITION BY partition_column: Được sử dụng để chia dữ liệu thành các phần (partitions) riêng biệt dựa trên giá trị của một cột. Nếu không sử dụng phân vùng, hàm LEAD() sẽ áp dụng cho toàn bộ dữ liệu.
  • ORDER BY order_column: Sắp xếp dữ liệu theo cột này trước khi áp dụng hàm LEAD(). Các dòng sẽ được xác định theo thứ tự của cột này.

Ví dụ sau đây sử dụng LEAD() để truy cập giá trị của cột "sales" của dòng tiếp theo trong một bảng "sales_data":

sql
SELECT date, sales, LEAD(sales) OVER (ORDER BY date) AS next_sales FROM sales_data;
Save to grepper

Trong truy vấn này, chúng ta truy cập giá trị của cột "sales" của dòng tiếp theo dựa trên thứ tự ngày ("date"). Kết quả sẽ chứa các cột "date", "sales" và "next_sales" với "next_sales" là giá trị của "sales" của dòng tiếp theo.



SELECT FromDate,CandidateGoliveId,

           LEAD(FromDate,1, GETDATE()) OVER (PArtition by CandidateGoliveId ORDER BY CandidateGoliveId, FromDate) AS previous_end_date

    FROM TrackingAlternation order by CandidateGoliveId




Comments

Popular posts from this blog

ASP.NET MVC + AdminLTE

Create schedule Restart SQL Server

Bỏ dấu tiếng việt