構文
用途
NTILE
は分析ファンクションです。これは、順序付けられたデータセットをexpr
に指定した数のバケットに分割し、適切なバケット番号を各行に割り当てます。バケットには1からexpr
の番号が付けられます。expr
値は、パーティションごとに、正の定数に変換される必要があります。Oracle Databaseではexpr
は整数とみなされるため、この値が整数ではない定数の場合は整数に切り捨てられます。戻り値はNUMBER
です。
バケット内の行数は、最大で1異なります。残りの値(バケットで割った行数の余り)は、バケット1から順に、1行ずつ分割されます。
expr
が行数より大きい場合、行数と等しい数のバケットに行が入れられ、余りのバケットは空になります。
expr
には、NTILE
または他の分析ファンクションを使用して分析ファンクションをネストできません。ただし、他の組込みファンクション式をexpr
で使用できます。
例
次の例では、部門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