ClickHouse 之 SummingMergeTree

只需要根据GROUP BY条件得到汇总结果(SUM),不关心明细数据。解决存储和查询的开销。

特点

  • 使用ORDER BY排序键作为聚合汇总的条件Key。
  • 以分区为单位进行聚合,只在分区合并时触发。
  • 如果指定了columns汇总列,则SUM汇总在这些列字段。
  • 如果未指定columns汇总列,则SUM汇总在所有非主键的数值类型字段。
  • 如果ORDER BY和PRIMARY KEY的字段不相同,PK列字段必须是ORDER BY的前缀,即ORDER BY(B, C) PRIMARY KEY A不合法。
  • 非聚合字段,使用第一行数据的取值。

使用

CREATE TABLE summing_table
(
    id   String,
    code String,
    v1   UInt32,
    v2   Float64,
    time DateTime
) ENGINE = SummingMergeTree()
PARTITION BY toYYYYMM(time)
ORDER BY (id, code)
PRIMARY KEY id;

INSERT INTO summing_table
VALUES ('001', 'C1',10,20, toDateTime('2021-09-21 14:00:00')),
       ('001', 'C1',20,30, toDateTime('2021-09-22 15:00:00')),
       ('001', 'C2',20,10, toDateTime('2021-09-22 17:00:00')),
       ('001', 'C2',10,10, toDateTime('2021-10-01 19:00:00')),
       ('002', 'C3',30,20, toDateTime('2021-10-03 15:00:00'));
       
SELECT * FROM summing_table;  

结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值