quantile
La función quantile es una función de ventana que devuelve el ranking de cada fila normalizado entre 1 y “N”. Es decir, divide el conjunto de registros en “N” grupos con el mismo número de registros cada uno y los numera de 1 a “N”.
Tiene un parámetro de entrada para especificar el número de cuantiles. Por ejemplo, quantile(3 order by ventas) creará tres grupos numerados como 1,2 y 3.
Requiere la cláusula ORDER BY en la partición OVER.
Se puede usar tanto la sintaxis OVER del SQL estándar como la sintaxis compacta propia de Crono.
Ejemplo
Sección titulada «Ejemplo»La siguiente consulta clasifica las tiendas en 3 grupos según sus ventas. Las ventas del grupo 1 incluirá el tercio de tiendas con mayores ventas.
select lb_tiendas.nombre tienda, sum(unidades) ventas, quantile(3 order by ventas desc) percentilfrom dbo.lb_ventasinner join lb_tiendas using id_tiendagroup by allLa consulta SQL generada es:
SELECT lb_tiendas.nombre AS tienda, sum(unidades) AS ventas, ceiling(3.0*rank() OVER (ORDER BY sum(unidades))/count(*) OVER ()) AS percentilFROM dbo.lb_ventasINNER JOIN lb_tiendas ON (lb_ventas.id_tienda=lb_tiendas.id_tienda)GROUP BY lb_tiendas.nombreComentarios
Sección titulada «Comentarios»Esta función es similar a rank, percentile, decile y quartile``. La función rank` devuelve la posición ordinal de cada registro, mientras que las otras funciones clasifican los registros en grupos de distintos tamaños (100, 10, 4 o n).