Clickhouse實(shí)現(xiàn)累計(jì)求和cumulative sum

源表數(shù)據(jù)如下:

time province order_cnt
20200601 shandong 100
20200601 jiangsu 200
20200601 zhejiang 300
20200602 shandong 200
20200602 jiangsu 300
20200602 zhejiang 400
20200603 shandong 400
20200603 jiangsu 500
20200603 zhejiang 600

需求是按照省份和時(shí)間分類,每天累計(jì)求和,需求的結(jié)果如下:
(每天的數(shù)據(jù)都要按照省份將之前的訂單數(shù)目進(jìn)行累加)

time province order_cnt_sum
20200601 shandong 100
20200601 jiangsu 200
20200601 zhejiang 300
20200602 shandong 300
20200602 jiangsu 500
20200602 zhejiang 700
20200603 shandong 700
20200603 jiangsu 1000
20200603 zhejiang 1300

需要借助clickhouse的array系列函數(shù)實(shí)現(xiàn): ArrayFunction

SELECT
    time,
    province,
    arraySum(arraySlice(order_cnts, 1, i)) AS order_cnt_sum  
FROM
(
    SELECT groupArray(order_cnt) AS order_cnts,
           groupArray(time) AS times,
           groupArray(province) AS provinces
    FROM
    (
        SELECT *
        FROM test_table order by time
    ) group by province
)
ARRAY JOIN
    times as time,
    provinces AS province,
    arrayEnumerate(order_cnts) AS i;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容