# pctrank ❇️
La función pctrank
es una función de ventana que devuelve el ranking de cada fila normalizado entre 0 y 1.
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
La siguiente consulta devuelve el 40% de las tiendas con mayor venta.
select
lb_tiendas.nombre tienda,
sum(unidades) ventas,
pctrank(order by ventas desc) rank
from dbo.lb_ventas
inner join lb_tiendas using id_tienda
group by all
qualify rank<0.4
La consulta SQL generada es:
SELECT *
FROM (
SELECT
lb_tiendas.nombre AS tienda,
sum(unidades) AS ventas,
1.0*rank() OVER (ORDER BY sum(unidades) DESC)/count(*) OVER () AS rank
FROM dbo.lb_ventas
INNER JOIN lb_tiendas ON (lb_ventas.id_tienda=lb_tiendas.id_tienda)
GROUP BY lb_tiendas.nombre
) a
WHERE rank<0.4
# Comentarios
Esta función es similar a rank
y percentile
. La función rank
devuelve la posición ordinal de cada registro, percentile
la normaliza entre 0 y 100, y pctrank
la normaliza entre 0 y 1.