Tengo una tabla con S series temporales de datos como este:optimización de una consulta SQL Vertica hacer totales acumulados
key day delta
Para una clave dada, es posible, pero poco probable que los días van a estar ausentes.
Me gustaría construir una columna acumulativa a partir de los valores delta (INT positivos), a los efectos de insertar estos datos acumulativos en otra tabla. Esto es lo que tengo hasta ahora:
SELECT key, day,
SUM(delta) OVER (PARTITION BY key ORDER BY day asc RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
delta
FROM S
En mi sabor de SQL, la cláusula de ventanas por defecto es oscilar entre ANTERIOR sin límites y la fila actual, pero me dejó que no sea explícita.
Esta consulta es muy lenta, como el orden de magnitud más lenta que la consulta quebrada anterior, que llenó los 0 del recuento acumulado. ¿Alguna sugerencia para otros métodos para generar los números acumulados?
me hicieron ver las soluciones aquí: Running total by grouped records in table
el RDBMS que estoy usando es Vertica. Vertica SQL excluye la primera solución de subselección allí, y su planificador de consultas predice que la segunda solución de combinación externa izquierda es aproximadamente 100 veces más costosa que la forma analítica que muestro arriba.
¿Qué proyecciones que ha definido para esta tabla? ¿Cuántas filas y claves distintas? ¿Qué tan lento es "muy lento"? –
¿Qué filas tienes en la tabla? ¿Cómo está dividiendo/segmentando la proyección maestra para esa tabla? – mtrbean
¡Muy difícil de entender! ¿Podría proporcionar datos de muestra con la salida requerida? – AK47