---
title: "ClickHouse® tips #1: calculating aggregations after a date"
excerpt: "Tips and recipes to learn how to make the most of ClickHouse®, curated weekly by the Tinybird team. Part 1."
authors: "Javi Santana"
categories: "The Data Base"
createdOn: "2023-09-25 00:00:00"
publishedOn: "2021-01-26 00:00:00"
updatedOn: "2025-04-24 00:00:00"
status: "published"
---

<p>Imagine you have a table like</p><figure class="kg-card kg-embed-card"><iframe loading="lazy" width="100%" src="https://snippets.tinybird.co/XQAAAAJiAAAAAAAAAABBKUqGk9nLKueyPOV8cJJaWvzwPx744aFcoIlk713R4L-tggTI7L5cqVKTzYVfuLDAhfoinyucato8qgRX3ET9zKE6k370SOwfFz30gP0Jjq5Ts9PWXgvKZFUyl8a8YefYAX__-DIoAA/embed"></iframe></figure><p>And you want to calculate, per day, the <code>sum(amount)</code> of previous and following days.</p><p>For example, for the day <code>2020-01-05</code> you have to calculate <code>sumIf(amount, ts &lt; '2020-01-05')</code> and <code>sumIf(amount, ts &gt;= '2020-01-05')</code></p><p>I think there are many ways to do it but this works:</p><figure class="kg-card kg-embed-card"><iframe loading="lazy" width="100%" src="https://snippets.tinybird.co/XQAAAAKdAgAAAAAAAABBKUqGk9nLKvRHt_uEsenNxaw-l7nVBRz47DNiFYvmhaQnj_-QudIqB711HD3rvA_MftZohI4ARiBre1iyOhsG1zaUkcEZGWkT-dILMubmBIE_KhBIZtfWc43_Ye5gbE-M-epDoZzTa-i2KWCaDV85PHDXfjwpU_12h4D3OyJkk3eCSosmgmdqI0ulIfsAEcvGOAuBM3A9Yo6blK7-2uviSX5zqVBkiEZhN7GlIwh1L__PL1sTzzYNxGnDQfKRTpmtFgamKutPhWMhKuUnk0hAXYdlz3oIDAcq3SUgrTpmkimn5odI-psU4rIiYdo4BpId8d_UHQWDtf5TCsl2QA0MMp14KaRZBx1DUUK8hHyL04Lc06RuOL7qA0do_H6GqAT5D8uIV88VyyOszje8Q3qbO2huLsJmMqaUBJwNuKLh1SJBQTNpLMptTeJ9IGnTqgdaF_y2gf0hGWDSGMwMopG8qsmqWCQbn2PMkFiz0hBLhkj0Y7w-dqfQM_gyH2-MR9cB7Hz16ap5rxPevG_-wW76jkp9Ow1kzQeOyL2Lgd3KMMCXccNjuhiCyhjY7-tNPRvS-Hvq0cJ_zbaXc1N4jMnl6gaeVpKFEv8Lo3gA/embed"></iframe></figure><p>Check out <a href="https://ui.tinybird.co/snapshot/cf60f944b5794745862f2b04f1ab6894">this snapshot</a> for a step-by-step explanation of what’s going on here.</p><p>I think a way to exploit that values for each day don’t need to be calculated every time for each day using a nice function, arrayCumSum, plus some other array magic.</p><figure class="kg-card kg-embed-card"><iframe loading="lazy" width="100%" src="https://snippets.tinybird.co/XQAAAAITAwAAAAAAAABBKUqGk9nLKvkJx_uEsenNxaw-l7dLxdLP_4deQ7W_WnmaehOfEfO4vMAR9_JQEzPv18b-fsDhjjUmY39eIhm4UOr21RJUoYXbjUSbd2l8nmO9qVF0refxSsyxIuFSYlDejFoHgnh5oCkwii5N7_cvIPsqfnDz0SILczDyr-y6I61C17lmt575G-MfAmG3puypcrxtOrrfGz7hpYPlW98bkWcRyI1Q28X2v3reEnG-RRWBuZoVR8HH0HHwIaTFqnoyo9T72CjJgI7OwRzw1z1V3HgoSGL59wMviVr5Ru668ZJPFXA4aA4t4Ogyk4alx5DFFC7xtFZv9EJ2_LT6WiUtpTXsCnpkofOZIRAp8zHvD5zmXdhgfPD71Rqk3w13QuaSm-BPM6crs5FhRgpVh5fPsLpsxthYyqCqcgR0mTyR_8xOzI-kFCGS1AkT-lX-MZlW1-hKllhqBViu56k_LUdmMIib4FVEG4kg69Fr8FBWUakoiCFLLJh_dx7iwqBlPVlLQDpHEMXCZJ3yd5r-bO_t3jS0OobHIktSCpX1P4h6kQp2yPwTn0oP-yyLkG9Ky_M0nbcVqFpYrfDt-bl4S0o9ETHBL8viu_gZmBbOY6v0DXnokRg3tQVGD_CykjlZVQE_2Jl0D_uS0U0/embed"></iframe></figure><p>Check <a href="https://ui.tinybird.co/snapshot/331f3d73364140b9a179ae14a29290db">this</a> out for a step-by-step explanation.</p><p>I feel there should be an easier way but that’s just a feeling.</p><p>‍</p>
