SQL

FIRST_VALUE

توابع پنجره ای SQL FIRST_VALUE() : توضیح جامع با مثال

مقدمه:

توابع پنجره ای در SQL به شما این امکان را می دهند که محاسبات را بر روی گروه های متوالی از داده ها در یک ردیف واحد انجام دهید. این توابع برای انجام کارهایی مانند یافتن اولین، آخرین، یا بزرگترین مقدار در یک پارتیشن از داده ها بسیار مفید هستند.

یکی از توابع پنجره ای پرکاربرد FIRST_VALUE() است که اولین مقدار را در یک پارتیشن از داده ها بر اساس یک ستون مرتب شده برمی گرداند. این تابع برای یافتن مقادیر اولیه در گروه های مختلف داده ها بسیار کاربردی است.

نحو:

SQL
FIRST_VALUE(expression)
OVER (PARTITION BY partition_expression
      ORDER BY order_expression
      [ROWS frame_clause])

اجزاء:

  • expression: عبارتی که می خواهید اولین مقدار آن را بدست آورید.
  • partition_expression: عبارتی که داده ها را به پارتیشن های مجزا تقسیم می کند.
  • order_expression: عبارتی که ترتیب مرتب سازی داده ها در هر پارتیشن را مشخص می کند.
  • frame_clause: (اختیاری) مشخص کننده محدوده ای از ردیف ها که تابع در آن اعمال می شود.

مثال:

فرض کنید جدولی به نام customers با ستون های customer_id, name, city و order_date داریم. می خواهیم برای هر شهر، اولین تاریخ سفارش را بدست آوریم.

SQL
SELECT customer_id,
       name,
       city,
       FIRST_VALUE(order_date) OVER (PARTITION BY city ORDER BY order_date) AS first_order_date
FROM customers;

در این مثال، داده ها بر اساس ستون city پارتیشن بندی شده و سپس بر اساس ستون order_date مرتب می شوند. تابع FIRST_VALUE() اولین تاریخ سفارش را برای هر شهر برمی گرداند.

نکات:

  • اگر از PARTITION BY استفاده نکنید، تابع FIRST_VALUE() اولین مقدار را از کل مجموعه نتایج برمی گرداند.
  • اگر از ORDER BY استفاده نکنید، ترتیب پیش فرض بر اساس شناسه ردیف خواهد بود.
  • می توانید از claus های مختلف frame برای تعریف محدوده ای از ردیف ها که تابع در آن اعمال می شود استفاده کنید. به عنوان مثال، ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW اولین مقدار در ردیف جاری را برمی گرداند.

مزایای استفاده از FIRST_VALUE():

  • خوانایی و وضوح کد را افزایش می دهد.
  • نیاز به پرس و جوهای فرعی را کاهش می دهد.
  • عملکرد را در برخی موارد بهبود می بخشد.

معایب استفاده از FIRST_VALUE():

  • می تواند برای مبتدیان SQL پیچیده باشد.
  • در همه پایگاه های داده های SQL پشتیبانی نمی شود.

منابع:

مثال های اضافی:

  • یافتن کمترین قیمت برای هر محصول:
SQL
SELECT product_id,
       product_name,
       MIN(price) OVER (PARTITION BY product_id) AS min_price
FROM products;
  • یافتن بالاترین حقوق در هر بخش:
SQL
SELECT employee_id,
       name,
       department,
       FIRST_VALUE(salary) OVER (PARTITION BY department ORDER BY salary DESC) AS max_salary
FROM employees;
  • محاسبه میانگین متحرک ۳ روزه قیمت سهام:
SQL
SELECT date,
       price,
       AVG(price) OVER (PARTITION BY stock_id ORDER BY date ROWS BETWEEN ۲ PRECEDING AND CURRENT ROW) AS moving_average
FROM stock_prices;

همانطور که مشاهده می کنید، تابع FIRST_VALUE() یک ابزار قدرتمند برای تجزیه و تحلیل داده ها در SQL است. با کمی تمرین، می توانید از این تابع برای حل طیف گسترده ای از مشکلات به طور کارآمد و موثر استفاده کنید.

۵/۵ ( ۱ امتیاز )
نمایش بیشتر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا