تابع پنجره ای LAST_VALUE در SQL: توضیح جامع با مثال
تابع LAST_VALUE یکی از توابع پنجره ای در SQL است که برای یافتن آخرین مقدار در یک مجموعه مرتب شده از مقادیر استفاده می شود. این تابع در کنار توابع دیگر پنجره ای مانند FIRST_VALUE، LAG و NTH_VALUE قرار می گیرد و برای انجام محاسبات تحلیلی قدرتمند بر روی مجموعه های داده درون گروه ها یا دسته ها کاربرد دارد.
نحو کلی:
SQL
 LAST_VALUE(expression) OVER (window_definition)
 در این عبارت:
expression: عبارتی که می خواهید مقدار آن برای هر سطر محاسبه شود.window_definition: تعریفی از پنجره ای است که تابع در آن عمل می کند. این تعریف شامل جزئیاتی مانند نحوه پارتیشن بندی داده ها، ترتیب دهی و محدوده پنجره می باشد.
مثال 1: یافتن آخرین قیمت سهم در هر روز
فرض کنید جدولی به نام stock_prices داریم که شامل ستون های date (تاریخ)، symbol (نماد سهم) و price (قیمت) می باشد. می خواهیم آخرین قیمتی را که هر سهم در هر روز داشته است، بدست آوریم.
SQL
 SELECT date, symbol, price,
       LAST_VALUE(price) OVER (PARTITION BY symbol ORDER BY date) AS last_price
FROM stock_prices;
 در این مثال:
- داده ها بر اساس ستون 
symbolپارتیشن بندی می شوند، به این معنی کهLAST_VALUEبرای هر نماد سهم به طور جداگانه محاسبه می شود. - داده ها بر اساس ستون 
dateبه ترتیب صعودی مرتب می شوند، به این معنی کهLAST_VALUEآخرین قیمت را در هر روز برای هر سهم پیدا می کند. - ستون جدیدی به نام 
last_priceاضافه می شود که آخرین قیمت هر سهم در هر روز را نشان می دهد. 
مثال 2: یافتن بالاترین موجودی انبار در هر ماه
فرض کنید جدولی به نام inventory داریم که شامل ستون های product_id (شناسه محصول)، month (ماه) و quantity (موجودی) می باشد. می خواهیم بالاترین موجودی را که هر محصول در هر ماه داشته است، بدست آوریم.
SQL
 SELECT product_id, month, quantity,
       LAST_VALUE(quantity) OVER (PARTITION BY product_id ORDER BY month DESC) AS max_quantity
FROM inventory;
 در این مثال:
- داده ها بر اساس ستون 
product_idپارتیشن بندی می شوند. - داده ها بر اساس ستون 
monthبه ترتیب نزولی مرتب می شوند، به این معنی کهLAST_VALUEبالاترین موجودی را در هر ماه برای هر محصول پیدا می کند. - ستون جدیدی به نام 
max_quantityاضافه می شود که بالاترین موجودی هر محصول در هر ماه را نشان می دهد. 
نکات مهم:
- توابع پنجره ای به طور ذاتی بر روی مجموعه های نتیجه مرتب شده عمل می کنند. اطمینان حاصل کنید که قبل از استفاده از توابع پنجره ای، داده های خود را بر اساس ستون مورد نظر مرتب سازی کنید.
 - می توانید از عبارت های مختلفی مانند 
ROWS BETWEENوPRECEDINGبرای تعریف دقیق تر پنجره استفاده کنید. - توابع پنجره ای قدرتمند هستند و می توانند برای انجام محاسبات پیچیده تحلیلی بر روی داده ها استفاده شوند. با کمی تمرین می توانید از آنها برای حل طیف وسیعی از مسائل تحلیلی استفاده کنید.
 
منابع مفید:
- http://www-db.deis.unibo.it/courses/TW/DOCS/w3schools/sql/sql_func_last.asp.html
 - https://www.geeksforgeeks.org/window-functions-in-sql/
 - https://stackoverflow.com/questions/15434934/difference-between-the-first-value-and-the-last-values-of-the-each-days
 
 
 


