es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función de ventana de contar en Amazon Redshift SQL.

Estoy buscando obtener un recuento continuo de clientes basado en su nivel de lealtad. Cada nivel se basa en un LTV (0-124.99, 125-198.99, 199-749.99 y 750+). Esto es lo que tengo hasta ahora, que solo devuelve 0 para cada fecha con algunos 1 dispersos a lo largo de los años. ¿Alguien puede ayudar con la función de ventanas?

SELECT TRUNC(CD.date) AS "día", tier, 
COUNT(customer_email) OVER(PARTITION BY TRUNC(CD.date), tier ORDER BY 
TRUNC(CD.date), tier 
ASC ROWS UNBOUNDED PRECEDING) AS "clientes"
FROM {{ @public_fact_criquet_loyalty_master AS LM}}
RIGHT JOIN public.dim_calendar_dates CD ON TRUNC(CD.date) = TRUNC(LM.timestamp)
WHERE TRUNC(CD.date) BETWEEN '2011-11-09' AND CURRENT_DATE
GROUP BY TRUNC(CD.date), tier, customer_email
ORDER BY TRUNC(CD.date), tier ASC
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener un recuento continuo de clientes basado en su nivel de lealtad, la función de ventana se puede modificar de la siguiente manera:

    SELECT TRUNC(CD.date) AS "día", tier, 
    SUM(COUNT(customer_email)) OVER(PARTITION BY tier ORDER BY TRUNC(CD.date)
    ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS "clientes"
    FROM {{ @public_fact_criquet_loyalty_master AS LM}}
    RIGHT JOIN public.dim_calendar_dates CD ON TRUNC(CD.date) = TRUNC(LM.timestamp)
    WHERE TRUNC(CD.date) BETWEEN '2011-11-09' AND CURRENT_DATE
    GROUP BY TRUNC(CD.date), tier
    ORDER BY TRUNC(CD.date), tier ASC
    

    Los cambios incluyen:

    • Eliminar la partición por fecha y ordenar por fecha para permitir un recuento continuo.
    • Cambiar la función de recuento para sumar los recuentos para cada nivel.
    • Modificar el marco de la ventana para que sume desde el inicio de los datos (UNBOUNDED PRECEDING) hasta la fila actual.

    Esto debería proporcionar un recuento continuo de clientes para cada nivel de lealtad a lo largo del tiempo.

Comments are closed.