基于DuckDB按时间戳生成价格-总数量的键值映射
解决DuckDB中按timestamp生成带sum(size)的价格直方图映射问题
直接用DuckDB的map_agg函数就能把已聚合的三列表转成目标键值映射格式,具体操作如下:
假设你已聚合的表名为agg_price_size,包含字段timestamp、price、total_size(SUM(size)的别名),执行以下SQL:
SELECT timestamp, map_agg(price, total_size) AS price_size_histogram FROM agg_price_size GROUP BY timestamp;
如果想直接从原始数据一步完成聚合+生成映射,也可以嵌套查询:
SELECT timestamp, map_agg(price, sum_size) AS price_size_histogram FROM ( -- 先按时间戳和价格聚合计算总size SELECT timestamp, price, SUM(size) AS sum_size FROM raw_data GROUP BY timestamp, price ) AS grouped_data GROUP BY timestamp;
说明
map_agg(key_column, value_column)会将每个timestamp分组下的price作为键、total_size作为值,聚合生成一个MAP类型的字段,完全匹配你需要的直方图键值映射格式。- 生成的MAP可以直接通过
map_get函数取值,比如获取某时间戳下价格为100.0的总size:map_get(price_size_histogram, 100.0)。
内容的提问来源于stack exchange,提问作者Deftness
相关产品推荐
相关产品推荐

