�{�A�ڂ�SQL�̉��p�͂�g�ɕt�������G���W�j�A�����ɁA���܂��܂ȃe�N�j�b�N���Љ��BSQL�̊�{�\���͕��ՂȂ��̂����A�����Ŋ��p����ɂ͋��ȏ��I�ȋL�q�𗝉����邾���ł͕s�\�����B�{�A�ڂ́A�����ȃ��[���}�K�W���u����I�I���I Oracle - �ǂ��Ղ茟�ؐ����v�s����C���T�C�g�e�N�m���W�[�̃R���T���^���g�����M�w�Ɍ}���ASQL�̃Z���X����ɖ𗧂�Z���Z���Љ�Ă����B�i�ҏW�ǁj
�@������A�O��u�ɂ߂悤�I���͊��ɂ��SQL�������v���v�Ɉ��������A���͊��̒�����E�B���h�E���ƃ��|�[�g�������グ�Đ������܂��B
�@����ł́A�E�B���h�E���𗘗p���āA���͂��Ă݂܂��傤�B�E�B���h�E�����g�p���āA�ݐϏW�v�A�ړ��W�v�A�W���W�v���v�Z�ł��܂��B����́A�E�B���h�E�����ȒP�ɗ������Ă��炤���߂ɁA�ݐϏW�v�ɂ��Đ������܂��B
�@�E�B���h�E���ɂ́ASUM()�AAVG()�AMAX()�AMIN()�ACOUNT()�ASTDDEV()�AFIRST_VALUE()�ALAST_VALUE()�Ȃǂ����݂��܂��B���i�悭�g�p����SUM()��AVG()���A�Ȃ��E�B���h�E���Ȃ́H
�W�v������Ȃ��́H �Ǝv��ꂽ���������Ǝv���܂��i�E�B���h�E���́A�W�v�E�B���h�E���ƌĂ��ꍇ������܂��j�B
�@�E�B���h�E���𗝉�����ɂ́A�u�E�B���h�E�v�Ƃ����T�O�𗝉�����K�v������܂��B�E�B���h�E�̊T�O��}�ŕ\���Ă݂܂��傤�i�W�v���ƕ��͊��̈Ⴂ�́A�O��̓��e���Q�Ƃ��Ă��������j�B
�@�u�E�B���h�E�v�̊T�O�́A������܂������H ���t��}�ŗ�������̂́A����ł��ˁB�ł́A���ۂɎ��s���ꂽ�l�����āA�u�E�B���h�E�v�i�E�B���h�E���j�̗�����[�߂Ă����܂��傤�B���Ȃ��݂�SCOTT���[�U�[�����L����EMP�\���g���Ă���Ă݂܂��B
SQL> desc emp ���O NULL? �^ ----------------------------------------- -------- ------------ EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2)
�@�E�B���h�E����SUM()���g�p���āAEMP�\�̊eJOB�i�E��j�ʂɋ����iSAL�j�̗ݐϏW�v���s���܂��B
SQL> select job, ename, sal, sum(sal) over(partition by job order by sal rows between unbounded preceding and current row) as amount_sal from emp order by job, sal, ename ; JOB ENAME SAL AMOUNT_SAL --------- ---------- ---------- ---------- ANALYST FORD 3000 3000 ���� ANALYST SCOTT 3000 6000 ���� CLERK SMITH 800 800 �����E�B���h�E�J�n�_ CLERK JAMES 950 1750 �� ���e�s�ŃE�B���h�E �I���_���X���C�h CLERK ADAMS 1100 2850 �� �� CLERK MILLER 1300 4150 �����E�B���h�E�I���_ MANAGER CLARK 2450 2450 ���� MANAGER BLAKE 2850 5300 �� MANAGER JONES 2975 8275 ���� PRESIDENT KING 5000 5000 �� SALESMAN MARTIN 1250 1250 ���� SALESMAN WARD 1250 2500 �� SALESMAN TURNER 1500 4000 ���������́A�O���[�v SALESMAN ALLEN 1600 5600 ���� 14�s���I������܂����B
�@���SQL���́A�ȉ��̏������s���܂��B
�@3�Ԗڂ̃E�B���h�E�̎w��ɂ��āA���������ڂ����������Ă����܂��B
rows between unbounded preceding and current row�́A
rows between �E�B���h�E�J�n�_ and �E�B���h�E�I���_
��\���Ă��܂��B�E�B���h�E�J�n�_�Ɏw�肵��unbounded preceding�́A�u�O���[�v�̍ŏ��̍s���E�B���h�E�̊J�n�_�Ƃ���v���Ƃ��Ӗ����Ă��܂��B���X�g2�̌��ʂł́AJOB���ƂɃO���[�v�����������̂ŁA1�s�ځiANALYST�j�A3�s�ځiCLERK�j�A7�s�ځiMANAGER�j�A10�s�ځiPRESIDENT�j�A11�s�ځiSALESMAN�j���E�B���h�E�J�n�_�Ǝw�肳�ꂽ���ƂɂȂ�܂��B
�@�E�B���h�E�I���_�Ɏw�肵��current row�́A�u�E�B���h�E�̏I���_����ɃJ�����g�s�Ƃ���v���Ƃ��Ӗ����Ă��܂��B�J�����g�s���ړ�����ƃE�B���h�E�I���_���ړ����܂��B���X�g2�̌��ʂŁAJOB��CLERK�̌��ʂ����Ă݂�ƁAAMOUNT_SAL��̌��ʂ��e�s�ŏW�v����Ă��邱�Ƃ��m�F�ł��܂��B�E�B���h�E�I���_���A�O���[�v�̍Ō�ɂ��ǂ蒅�������_�ŁA�ݐόv�Z���I�����Ă��邱�Ƃ���̌��ʂ��m�F���邱�Ƃ��ł��܂��B
�@��A�̗�����܂Ƃ߂Ă݂܂��傤�B�J�����g�s�̓O���[�v�̍ŏ��̍s����O���[�v�̍Ō�̍s�܂ŃX���C�h���܂��B�X���C�h���邽�тɃJ�����g�s�ł͂��̎��_�ł̃E�B���h�E��p���ėݐόv�Z���s���A���ʂ��J�����g�s�Ɋi�[���܂��B
�@�E�B���h�E�����g�����Ȃ������ŁA�������ׂ��u�E�B���h�E�v�̊T�O�́A�����ł��܂������H�i���y�[�W�֑����j
Copyright © ITmedia, Inc. All Rights Reserved.