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

如何在统计全部及指定行数据时避免多SELECT语句

优化后的SQL语句

你可以通过条件聚合将两个统计逻辑合并到单个查询中,避免重复扫描数据集:

SELECT
  COUNT(DISTINCT user_pseudo_id) AS total_active_users,
  COUNT(DISTINCT CASE WHEN _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 31 DAY)) AND FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)) THEN user_pseudo_id END) AS active_users_last_30_days
FROM `myDbSet.events_*`
WHERE event_name = 'screen_view'

优化说明

  • 只需要扫描一次events_*表,比原方案的两次独立查询更节省资源,执行效率更高。
  • COUNT(DISTINCT CASE...)逻辑:当表后缀符合近30天的日期范围时,保留对应的user_pseudo_id,否则返回NULL;COUNT会自动忽略NULL值,最终统计出近30天的独立用户数。
  • 第一个COUNT(DISTINCT user_pseudo_id)不受CASE条件限制,统计所有符合event_name = 'screen_view'的独立用户总数。

内容的提问来源于stack exchange,提问作者Imran Qadir Baksh - Baloch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:50:23