Hola Najum, puedes usar SUM como WINDOW FUNCTION con un FRAME (RANGE
BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
Puedes probar con algo como esto y ajustarlo para tu caso
select *,
sum(ventas_num) over ( order by timestamp RANGE BETWEEN UNBOUNDED
PRECEDING AND CURRENT ROW)/
nullif(sum(cliente_num) over ( order by timestamp RANGE BETWEEN
UNBOUNDED preceding AND CURRENT ROW),0)
from tu_tabla
Saludos
On 21-04-22 21:14, Nahum Castro wrote:
Saludos a tod@s
Tengo la siguiente estructura
timestamp correo ventas_num cliente_num porcentaje de respuesta
1 envio_ventas 1 0
2 envio_ventas 1 0
3 resp_cliente 0 1
4 envio_ventas 1 0
5 resp_cliente 0 1
6 resp_cliente 0 1
7 envio_ventas 1 0
Y tengo un problema para generar la siguiente estructura:
timestamp correo ventas_num cliente_num
porcentaje de respuesta
1 envio_ventas 0 0 sum(ventas_num)/sum(cliente_num)
'0/0 null
2 envio_ventas 0 0 sum(ventas_num)/sum(cliente_num)
'0/0 null
3 resp_cliente 0 1 sum(ventas_num)/sum(cliente_num)
'0/1 0
4 envio_ventas 1 0 sum(ventas_num)/sum(cliente_num)
1/1 1
5 resp_cliente 0 1 sum(ventas_num)/sum(cliente_num)
1/2 0.5
6 resp_cliente 0 1 sum(ventas_num)/sum(cliente_num) ‘1/3
0.333333333333333
7 envio_ventas 1 0 sum(ventas_num)/sum(cliente_num) 2/3
0.666666666666667
Tengo que ir sumando las columnas, solo tomando en cuenta las
anteriores y no las totales, trate de hacerlo usando rollup, pero no
me funciono. El problema es que inicio a contar hasta que el cliente
me responde y no antes, por eso los primeros envíos de ventas se
cuentan como cero.
Alguna vez vi hace como ocho años en la lista algo similar, pero no lo
encontré :(.
Si me pudieran orientar por dónde entrarle al problema se los
agradecería mucho.
Saludos cordiales.
Nahum.
--
*Nahum Castro González*
Blvd. Perdigón 214, Brisas del Lago.
CP 37207
León, Guanajuato, México