Je cherche à calculer une somme cumulée d'une colonne en partition par rapport à une autre colonne, en utilisant SnowFlake SQL. Voici un exemple de table d'entrée:
ID_1 DATE_1 FLAG
A 10/12/2016 1
A 10/31/2016 1
A 11/8/2016 1
B 2/1/2017 1
B 3/27/2017 1
Je veux calculer une somme cumulée entre FLAG et DATE_1 (par ordre croissant), en partitionnant par rapport à ID_1. Ainsi, le résultat dans cet exemple devrait être :
ID_1 DATE_1 FLAG_RUNNING_SUM
A 10/12/2016 1
A 10/31/2016 2
A 11/8/2016 3
B 2/1/2017 1
B 3/27/2017 2
J'ai essayé de faire des expressions de table commune récursives (CTE) pour cela (voir ici: https://docs.snowflake.net/manuals/sql-reference/constructs/with.html) mais Snowflake ne supporte pas les fonctions de fenêtrage dans les CTE récursives, comme indiqué dans ce document.
Est-ce que quelqu'un sait comment je peux faire cela, de préférence proprement?
Je soupçonne que les jointures/CTE récursives sont en quelque sorte la réponse, mais je suis ouvert à des solutions non récursives également. Peu importe ce qui fonctionne.