تا قبل از نسخه 23ai نمی توانستیم از توابع تجمیعی نظیر 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'
در اوراکل نسخه 23ai این امکان وجود دارد تا از توابع تجمیعی بر روی نوع داده 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