partition by oracle

 

استفاده Partition By در اوراکل

 

برای اینکه این موضوع برای دوستان کاملا شفاف شود آن را با مثال بیان می کنم. برای مثال از جدول EMP در دیتابیس اوراکل استفاده می شود.
مورد کاربرد Partition By در Oracle:
  • توابع تحلیلی(analytic functions) از Partition By استفاده می شود.
  • بوسیله OVER شما می توانید بدون استفاده از Group By اطلاعات تجمیعی را بدست آورید.به بیا ن دیگر می توانید جزئیات ردیف ها را با داده های جمع آوری شده در کنار هم داشته باشید.
  • خیلی وقت ها اتفاق افتاده که شما می خواهید عمل تجمیعی مثل جمع، تعداد و .. را بروی اطلاعاتی از جداول انجام دهید و در حین حال نیاز به PK آن جدول هم دارید.
  • استفاده از چندین توابع با استفاده از شرایط خاص فیلدهای جداول
مثال اول:
همانطور که مشاهده می کنید.به ازای هر نوع Deptno تعداد آن نیز جلوی هر رکورد آورده شده است
COUNT(*) = بدست آوردن تعداد رکورد
OVER = برای تنظیمات روی ستونها
(PARTITION BY deptno) = آنهایی که شبیه Deptno… هستند
SELECT empno, deptno, COUNT(*)
OVER (PARTITION BY deptno) DEPT_COUNT
FROM emp

Result 1:
۷۷۸۲-۱۰--۳
۷۹۳۴-۱۰--۳
۷۸۳۹-۱۰--۳
۷۹۰۲-۲۰--۵
۷۷۸۸-۲۰--۵
۷۵۶۶-۲۰--۵
۷۳۶۹-۲۰--۵
۷۸۷۶-۲۰--۵
۷۵۲۱-۳۰--۶
۷۶۵۴-۳۰--۶
۷۸۴۴-۳۰--۶
۷۹۰۰-۳۰--۶
۷۴۹۹-۳۰--۶
۷۶۹۸-۳۰—۶
مثال اول با Group by:
همانطور که مشاهده می کنید تعداد بر اساس Deptno گروه بندی شده است
SELECT deptno, COUNT(*) DEPT_COUNT
FROM emp
Group by deptno

Result 1:
۳۰-۶
۲۰-۵
۱۰-۳
مثال دوم:
همانطور که مشاهده می کنید بیشترین حقوق یکبار بر اساس DEPTNO محاسبه می شود بعنوان فیلد MAX_SAL_DEPTNO و نیز بار دیگر بیشترین حقوق بر اساس JOB محاسبه می شود بعنوان فیلد MAX_SAL_JOB.
یکبار جدول EMP را در دیتابیس اوراکل بدون شرط اجرا کنید و سپس در صفحه ای دیگر کوئری زیر را اجرا کنید و جواب آن را با جدول EMP مقایسه کنید.
SELECT
ENAME,
SAL,
DEPTNO,
MAX(SAL) OVER (PARTITION BY DEPTNO) MAX_SAL_DEPTNO,
JOB,
MAX(SAL) OVER (PARTITION BY JOB) MAX_SAL_JOB
FROM
EMP;
مثال سوم:
select deptno, ename, hiredate,
count(*) over (partition by deptno order by hiredate nulls first range 100 preceding) cnt_range,
count(*) over (partition by deptno order by hiredate nulls first rows 2 preceding) cnt_rows
from emp
where deptno in (10, 20)
order by deptno, hiredate
مثال ها و مقایسه های زیادی را می توانید در لینک زیر مشاهده کنید:
asktom.oracle.com
امیدوار هستم که به دوستان کمک کرده باشد.
5/5 - (1 امتیاز)

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

نشانی ایمیل شما منتشر نخواهد شد.

این قسمت نباید خالی باشد
این قسمت نباید خالی باشد
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست
Oracle APEX Capabilities (OAC)