¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

3.5. ������ɥ��ؿ�

������ɥ��ؿ��ϸ��ߤιԤ˲��餫�Ȥ�ط�����ơ��֥�Ԥΰ�Ż�ޤ����̤η׻���Ԥ��ޤ��� ����Ͻ���ؿ��ˤ��Ԥ���׻��η����Ȼ����褦�ʤ�ΤǤ��� �Ȥϸ��äƤ⡢�̾�ν���ؿ��Ȥϰۤʤꡢ������ɥ��ؿ��λ��Ѥ�ñ����ϹԤ˹Ԥ򥰥롼�ײ����ޤ��� �ԤϤ��줾����̤οȸ���ݻ����ޤ��� ΢¦�Ǥϡ�������ɥ��ؿ����䤤��碌��̤ˤ�븽�߹Ԥ����Ǥʤ�������ʾ�ιԤ˥����������뤳�Ȥ��Ǥ��ޤ���

����Ϥ��������ʿ�ѵ�Ϳ�Ȥ��줾��ν��Ȱ��ε�Ϳ��ɤΤ褦����Ӥ��뤫�򼨤�����Ǥ���

SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsalary;

  depname  | empno | salary |          avg          
-----------+-------+--------+-----------------------
 develop   |    11 |   5200 | 5020.0000000000000000
 develop   |     7 |   4200 | 5020.0000000000000000
 develop   |     9 |   4500 | 5020.0000000000000000
 develop   |     8 |   6000 | 5020.0000000000000000
 develop   |    10 |   5200 | 5020.0000000000000000
 personnel |     5 |   3500 | 3700.0000000000000000
 personnel |     2 |   3900 | 3700.0000000000000000
 sales     |     3 |   4800 | 4866.6666666666666667
 sales     |     1 |   5000 | 4866.6666666666666667
 sales     |     4 |   4800 | 4866.6666666666666667
(10 rows)

�ǽ�Σ��Ĥν�����ϡ��ơ��֥�empsalary����ľ�ܤ⤿�餵�졢�ơ��֥���Τ��줾��ιԤ��Ф����Ĥν��ϹԤ�¸�ߤ��ޤ��������ܤ���ϡ����ԤιԤ�Ʊ��depname���ͤ�������ƤΥơ��֥�Ԥ��ϤäƼ�������ʿ���ͤ�ɽ�路�Ƥ��ޤ����ʤ���ϼºݡ��̾��avg����ؿ���Ʊ���Ǥ�����OVER��ˤ�ꥦ����ɥ��ؿ��Ȥ��ư���졢�Ԥ�Ŭ�ڤʽ�����Ϥ�׻�����ޤ�����

������ɥ��ؿ��ƤӽФ��Ͼ�ˡ�������ɥ��ؿ�̾�Ȱ�����ľ��ȼ��줿OVER���ޤߤޤ��� ���줬�̾�ؿ����ޤ��Ͻ���ؿ��ȹ�ʸŪ�˶��̤����Ȥ����Ǥ��� OVER��ϡ�������ɥ��ؿ��ˤ������Τ����䤤��碌�ιԤ��ɤΤ褦��ʬ�򤵤�뤫��̩�˷��ꤷ�ޤ��� OVER���PARTITION BY�ꥹ�Ȥϡ��Ԥ�PARTITION BY����Ʊ���ͤ�ͭ���륰�롼�פޤ��ϥѡ��ƥ�������ʬ�䤹������Ԥ��ޤ��� ���줾��ιԤ��Ф���������ɥ��ؿ��ϸ��߹Ԥ�Ʊ���ѡ��ƥ�������ʬ�व���Ԥ��ϤäƷ׻�����ޤ���

OVER���ORDER BY����Ѥ��뤳�Ȥˤ�ꥦ����ɥ��ؿ��ǽ��������Ԥν�������椹�뤳�Ȥ�Ǥ��ޤ��� �ʥ�����ɥ���ORDER BY�ϹԤ����Ϥ�������˰��פ���ɬ�פ��餢��ޤ��󡣡� ��������򤢤��ޤ���

SELECT depname, empno, salary, rank() OVER (PARTITION BY depname ORDER BY salary DESC) FROM empsalary;

  depname  | empno | salary | rank 
-----------+-------+--------+------
 develop   |     8 |   6000 |    1
 develop   |    10 |   5200 |    2
 develop   |    11 |   5200 |    2
 develop   |     9 |   4500 |    4
 develop   |     7 |   4200 |    5
 personnel |     2 |   3900 |    1
 personnel |     5 |   3500 |    2
 sales     |     1 |   5000 |    1
 sales     |     4 |   4800 |    2
 sales     |     3 |   4800 |    2
(10 rows)

�����Ǽ����줿�褦�ˡ�rank�ؿ��ϡ����줾������Τ�ORDER BY���ͤ��Ф��븽�߹ԤΥѡ��ƥ��������ˤ������̤�ORDER BY���������줿������������ޤ��� rank������Ū�ʥѥ�᡼����ɬ�פȤ��ޤ��󡣤���ư���OVER��ˤ�괰���˷��ꤵ��뤿��Ǥ���

������ɥ��ؿ��ǹ�θ�����Ԥϡ��⤷¸�ߤ���ΤǤ���Ф���WHERE��GROUP BY�������HAVING��ǥե��륿���򤫤���줿�䤤��碌��FROM��ˤ�ä��������줿"���ۥơ��֥�"�Ǥ����㤨�С�WHERE���˰��פ��ʤ����������줿�Ԥϥ�����ɥ��ؿ��Ǥϸ��Ĥ��뤳�Ȥ��Ǥ��ޤ��󡣰ۤʤä�OVER����Ѥ��ơ��ۤʤä���ˡ�ˤ��ǡ�����ʬ�䤹��ʣ���Υ�����ɥ��ؿ����䤤��碌���ޤ�Ǥ⹽���ޤ��󡣤����������β��ۥơ��֥��������줿�Ԥ�Ʊ��ν��ޤ������Ƥ���ư���ޤ���

ORDER BY�ϡ��Ԥν���դ������פǤʤ����䰦��ǽ�Ǥ��뤳�Ȥ򸫤Ƥ��ޤ����� PARTITION BY��Ʊ�ͤ˳䰦���뤳�Ȥ��Ǥ��ޤ��� ���ξ�硢���ƤιԤ�ޤि�ä���ĤΥѡ��ƥ������¸�ߤ��ޤ���

������ɥ��ؿ��˴�Ϣ��������¾�ν��פʳ�ǰ������ޤ��� ���줾��ιԤ��Ф��ơ�����������ɥ��ե졼���ȸƤФ�롢���Υѡ��ƥ��������ιԤν��礬¸�ߤ��ޤ��� ¿���Ρʤ��������٤ƤǤϤ���ޤ���˥�����ɥ��ؿ��ϡ��ѡ��ƥ���������ΤǤϤʤ���������ɥ��ե졼��ιԤΤߤ��Ф��ƺ��Ѥ��ޤ��� �ǥե���ȤǤϡ�ORDER BY�����ꤵ���ȡ��ե졼��ϡ��ѡ��ƥ������λϤᤫ�鸽�ߤιԤޤǤΤ��٤ƤιԤȡ����θ�ˤ���ORDER BY��˽��äƸ��ߤιԤ��������Ԥ��鹽������ޤ��� ORDER BY����ά���줿��硢�ǥե���ȤΥե졼��Ϥ��Υѡ��ƥ��������Τ��٤ƤιԤ�ޤߤޤ��� [1] sum����Ѥ�����򼨤��ޤ���

SELECT salary, sum(salary) OVER () FROM empsalary;
 salary |  sum  
--------+-------
   5200 | 47100
   5000 | 47100
   3500 | 47100
   4800 | 47100
   3900 | 47100
   4200 | 47100
   4500 | 47100
   4800 | 47100
   6000 | 47100
   5200 | 47100
(10 rows)

��Ǥϡ�OVER�����ORDER BY��¸�ߤ��ޤ���Τǡ�������ɥ��ե졼��ϥѡ��ƥ�������Ʊ��Ǥ����ޤ��ѡ��ƥ�������PARTITION BY�⤢��ޤ���Τǥơ��֥����ΤȤʤ�ޤ�������������ȡ����¤Ϥ��줾�졢�ơ��֥����Τ��Ф��ƹԤ�졢���η�̡��ƽ��ϹԤ�Ʊ����̤����뤳�Ȥˤʤ�ޤ����������ʲ��Τ褦�ˡ�ORDER BY���ä���ȡ����˰ۤʤ��̤����ޤ���

SELECT salary, sum(salary) OVER (ORDER BY salary) FROM empsalary;
 salary |  sum  
--------+-------
   3500 |  3500
   3900 |  7400
   4200 | 11600
   4500 | 16100
   4800 | 25700
   4800 | 25700
   5000 | 30700
   5200 | 41100
   5200 | 41100
   6000 | 47100
(10 rows)

�����ǡ�sum�Ϻǽ�ΡʺǤ��㤤��salary���鸽�ߤιԤޤǡ����ߤΤ�ΤȽ�ʣ�������Ƥ�ޤ�ǡ��׻�����ޤ��ʽ�ʣ����salary���Ф����̤����դ��Ƥ��������ˡ�

������ɥ��ؿ����䤤��碌��SELECT�ꥹ�Ȥ�ORDER BY��˸¤äƵ��Ĥ���ޤ���GROUP BY��HAVING�������WHERE�Τ褦�ʶ����Ǥ϶ػߤ���Ƥ��ޤ���������ͳ�ϡ�������ɥ��ؿ�������Ū�ˡ������˵󤲤��褦�ʶ礬�������줿��˼¹Ԥ���뤫��Ǥ��� �ޤ�������ɥ��ؿ����̾�ν���ؿ��θ�˼¹Ԥ���ޤ��� ���줬��̣�����ϡ�������ɥ��ؿ��ΰ����˽���ؿ��ƤӽФ���ޤ�Ƥ�ͭ���Ǥ��������εդ�����Ω���ʤ��ȸ������ȤǤ���

������ɥ��黻���Ԥ�줿�塢�Ԥ˥ե��륿������Ԥä��ꥰ�롼�ײ���Ԥ�ɬ�פ���������硢���䤤��碌����Ѥ��ޤ��� ��򤢤��ޤ���

SELECT depname, empno, salary, enroll_date
FROM
  (SELECT depname, empno, salary, enroll_date,
          rank() OVER (PARTITION BY depname ORDER BY salary DESC, empno) AS pos
     FROM empsalary
  ) AS ss
WHERE pos < 3;

�嵭�䤤��碌��3��꾮����rank����ä������䤤��碌����ιԤΤߤ�ɽ�����ޤ���

�䤤��碌��ʣ���Υ�����ɥ��ؿ���ޤ��硢�ƥ�����ɥ��ؿ��˰ۤʤ�OVER��򵭽Ҥ��뤳�Ȥ��Ǥ��ޤ���������ʣ���δؿ���Ʊ��������ɥ�����ư�ɬ�פʾ��Ͻ�ʣ�Ȥʤꡢ�ޤ����顼�򾷤������Ǥ��������WINDOW��ǥ�����ɥ�����ư���̾�����դ��������OVER��ǻ��Ȥ��뤳�Ȥ��Ǥ��ޤ����ʲ�����򼨤��ޤ���

SELECT sum(salary) OVER w, avg(salary) OVER w
  FROM empsalary
  WINDOW w AS (PARTITION BY depname ORDER BY salary DESC);

������ɥ��ؿ��ˤĤ��Ƥ��ܺ٤ϡ� 項4.2.8�� 項9.19�� 項7.2.4������� SELECT �ޥ˥奢��ڡ����ˤ���ޤ���

注意

[1]

�ۤ�����ˡ�ǥ�����ɥ��ե졼���������뤤���Ĥ��Υ��ץ���󤬤���ޤ��������Υ��塼�ȥꥢ��Ǥϰ����ޤ��󡣾ܺ٤ϡ�項4.2.8�򻲾Ȥ��Ƥ���������