syntaxis
beschrijving van de afbeelding ntile.gif
zie ook:
“analytische functies” voor informatie over syntaxis, semantiek en beperkingen, inclusief geldige vormen van expr
doel
NTILE
is een analytische functie. Het verdeelt een geordende gegevensset in een aantal emmers aangegeven met expr
en kent het juiste emmernummer toe aan elke rij. De emmers zijn genummerd van 1 tot en met expr
. De waarde expr
moet voor elke partitie worden omgezet in een positieve constante. Oracle Database verwacht een geheel getal, en als expr
een nonintegerconstante is, dan snijdt Oracle de waarde af tot een geheel getal. De retourwaarde is NUMBER
.
het aantal rijen in de emmers kan maximaal 1 verschillen. De restwaarden (de rest van het aantal rijen gedeeld door emmers) worden verdeeld één voor elke emmer, te beginnen met emmer 1.
als expr
groter is dan het aantal rijen, wordt een aantal emmers dat gelijk is aan het aantal rijen gevuld en zijn de resterende emmers leeg.
u kunt NTILE
of een andere analytische functie voor expr
niet gebruiken. Dat wil zeggen, U kunt geen analytische functies nestelen, maar u kunt andere ingebouwde functie-expressies gebruiken voor expr
.
zie ook:
“over SQL Expressions” voor informatie over geldige vormen van expr
en tabel 2-10, “impliciete Type Conversion Matrix” voor meer informatie over impliciete conversie
voorbeelden
het volgende voorbeeld verdeelt in 4 emmers de waarden in de salary
kolom van de oe.employees
tabel uit afdeling 100. De kolom salary
heeft 6 waarden in deze afdeling, dus de twee extra waarden (de rest van 6/4) worden toegewezen aan emmers 1 en 2, die dus één waarde meer hebben dan emmers 3 of 4.
SELECT last_name, salary, NTILE(4) OVER (ORDER BY salary DESC) AS quartile FROM employees WHERE department_id = 100;LAST_NAME SALARY QUARTILE------------------------- ---------- ----------Greenberg 12000 1Faviet 9000 1Chen 8200 2Urman 7800 2Sciarra 7700 3Popp 6900 4