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:
7782-10--3
7934-10--3
7839-10--3
7902-20--5
7788-20--5
7566-20--5
7369-20--5
7876-20--5
7521-30--6
7654-30--6
7844-30--6
7900-30--6
7499-30--6
7698-30—6
مثال اول با Group by:
همانطور كه مشاهده مي كنيد تعداد بر اساس Deptno گروه بندي شده است
SELECT deptno, COUNT(*) DEPT_COUNT
FROM emp
Group by deptno

Result 1:
30-6
20-5
10-3
مثال دوم:
همانطور كه مشاهده مي كنيد بيشترين حقوق يكبار بر اساس 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 - (3 امتیاز)

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

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

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

keyboard_arrow_up
Oracle APEX Capabilities (OAC)