NTILE

構文

関連項目:

構文、セマンティクス、制限事項、およびexprの書式の詳細は、「分析ファンクション」を参照してください。

目的

NTILEは分析ファンクションです。これは、順序付けられたデータセットをexprに指定した数のバケットに分割し、適切なバケット番号を各行に割り当てます。バケットには1からexprの番号が付けられます。expr値は、パーティションごとに、正の定数に変換される必要があります。Oracle Databaseではexprは整数とみなされるため、この値が整数ではない定数の場合は整数に切り捨てられます。戻り値はNUMBERです。

バケット内の行数は、最大で1異なります。残りの値(バケットで割った行数の余り)は、バケット1から順に、1行ずつ分割されます。

exprが行数より大きい場合、行数と等しい数のバケットに行が入れられ、余りのバケットは空になります。

exprには、NTILEまたは他の分析ファンクションを使用して分析ファンクションをネストできません。ただし、他の組込みファンクション式をexprで使用できます。

関連項目:

exprの書式の詳細は、「SQL式」を参照してください。暗黙的な変換の詳細は、表2-8を参照してください。

次の例では、部門100のoe.employees表のsalary列の値を4つのバケットに分割します。この部門のsalary列には6つの値が存在するため、2つの余分な値(6を4で割った余り)は、バケット1および2に割り当てられます。そのため、バケット1および2は、バケット3または4より値が1つ多くなります。

SELECT last_name, salary, NTILE(4) OVER (ORDER BY salary DESC) AS quartile
  FROM employees
  WHERE department_id = 100
  ORDER BY last_name, salary, quartile;

LAST_NAME                     SALARY   QUARTILE
------------------------- ---------- ----------
Chen                            8200          2
Faviet                          9000          1
Greenberg                      12008          1
Popp                            6900          4
Sciarra                         7700          3
Urman                           7800          2