تا قبل از نسخه 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 استفاده تالار های تخصصی...
ادامه مطلبما را در سایت تالار های تخصصی دنبال می کنید
برچسب : نویسنده : خنجی niksaleh بازدید : 5 تاريخ : سه شنبه 18 ارديبهشت 1403 ساعت: 8:54