You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Presto/AWS Athena中合并两个分组时间序列查询结果

在Presto/AWS Athena中合并过滤与未过滤的月度统计结果

嘿,这个问题我熟!你不需要搞复杂的表关联,用条件聚合就能一步到位,而且性能比关联两张表好得多。核心思路是在同一个查询里,用CASE WHEN分别统计过滤和未过滤的distinct id数量,再按年月分组。

解决方案SQL代码

SELECT
  -- 生成YYYY-MM格式的年月字符串,替换event_date为你的日期列名
  format_date('%Y-%m', date_trunc('month', event_date)) AS month_year,
  -- 统计value='bla'时的distinct id数量,不符合条件的id会被转为NULL,COUNT(DISTINCT)自动忽略NULL
  COUNT(DISTINCT CASE WHEN value = 'bla' THEN id END) AS filtered_ids,
  -- 直接统计所有distinct id数量
  COUNT(DISTINCT id) AS unfiltered_ids
FROM
  your_table_name -- 替换为你的表名
GROUP BY
  month_year
ORDER BY
  month_year; -- 按年月排序,保证时间序列的顺序

结果说明

执行这个查询后,你会得到完全符合预期的结果格式:

filtered_idsunfiltered_idsmonth_year
6152020-06
10102020-07
10202020-08

额外提示

如果你的日期列不是标准日期类型(比如是字符串),可以先用parse_date函数转换:

format_date('%Y-%m', date_trunc('month', parse_date('%Y-%m-%d', date_string_column))) AS month_year

根据你的实际日期格式调整parse_date的格式参数即可。

内容的提问来源于stack exchange,提问作者oblio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 20:22:44