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

BigQuery中按月份计算各结果占比的技术实现问题

解决BigQuery月度内结果占比计算问题

我来帮你搞定这个百分比计算的问题!你之前的查询里,sum(count(1)) over()计算的是全表所有记录的总数,所以得到的是基于全量数据的占比。要改成按月度内的总量计算,只需要给OVER子句加上按月分区的规则就行。

修正后的查询语句

SELECT
  CAST(TIMESTAMP_TRUNC(CAST(created_at AS TIMESTAMP), MONTH) AS DATE) AS `month`,
  result,
  COUNT(*) * 100.0 / SUM(COUNT(1)) OVER(PARTITION BY `month`) AS percentage
FROM table_name
GROUP BY 1, 2
ORDER BY 1

关键修改点解释

  • 在OVER()中添加PARTITION BY month``,这样SUM(COUNT(1))就会针对每个月份独立计算该月的总记录数,而不是全表总数。
  • 每个分组(月份+结果)的记录数除以当月总记录数再乘以100,就得到了该结果在当月的占比百分比。

修正后的输出示例

假设你的数据和之前示例一致,修正后的输出会保持正确的月度占比逻辑:

monthresultpercentage
2021-01-01000150.00
2021-01-01000050.00
2021-02-01000133.33
2021-02-01000033.33
2021-02-01000233.33

这里的百分比都是基于当月的总记录数计算的:2021年1月总共有2条记录,每个结果各占50%;2021年2月总共有3条记录,每个结果各占约33.33%,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:38:12