اوراکل 23c – امکان استفاده از توابع تجمیعی(نظیر SUM و AVG) بر روی نوع داده INTERVAL

تا قبل از نسخه 23c نمی توانستیم از توابع تجمیعی نظیر SUM، AVG، MIN و MAX و … بر روی داده های با دیتاتایپ  INTERVAL استفاده کنیم و در صورت استفاده، به خطای ORA-00932 مواجه می شدیم. برای مثال می خواهیم بررسی کنیم اجرای جاب PURGE_LOG در یک ماه گذشته به صورت میانگین چقدر زمان برده است:

SQL> select column_name,data_type from dba_tab_cols where table_name='DBA_SCHEDULER_JOB_RUN_DETAILS' and column_name='RUN_DURATION';
COLUMN_NAME     DATA_TYPE
--------------- ----------------------------------------
RUN_DURATION    INTERVAL DAY(3) TO SECOND(0)
SQL> select AVG(RUN_DURATION) from DBA_SCHEDULER_JOB_RUN_DETAILS where job_name='PURGE_LOG';

'ORA-00932: inconsistent datatypes: expected NUMBER got INTERVAL DAY TO SECOND'

در اوراکل نسخه 23c این امکان وجود دارد تا از توابع تجمیعی بر روی نوع داده INTERVAL استفاده کنیم:

SQL> select AVG(RUN_DURATION) from DBA_SCHEDULER_JOB_RUN_DETAILS where job_name='PURGE_LOG';
AVG(RUN_DURATION)
------------------------------------------------
+000000000 00:00:01.419354839

بیشترین و کمترین زمان اجرای این JOB را هم می توان از طریق توابع MAX و MIN بدست آورد:

SQL> select MAX(RUN_DURATION) from DBA_SCHEDULER_JOB_RUN_DETAILS where job_name='PURGE_LOG';
MAX(RUN_DURATION)
-----------------------------------
+000 00:00:03
SQL> select MIN(RUN_DURATION) from DBA_SCHEDULER_JOB_RUN_DETAILS where job_name='PURGE_LOG';
MIN(RUN_DURATION)
---------------------------------
+000 00:00:01

همچنین تابع SUM را هم می توان بر روی INTERVAL DataType استفاده کرد:

SQL> select SUM(RUN_DURATION) from DBA_SCHEDULER_JOB_RUN_DETAILS where job_name='PURGE_LOG';
SUM(RUN_DURATION)
----------------------------------------------------
+000000000 00:00:44.000000000

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

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

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