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

SQL与BigQuery入门者求助:如何在BigQuery中统计列的计数?

解决BigQuery中统计WhitelistNames计数的问题

嘿,作为SQL和BigQuery入门用户,我先帮你拆解下现有查询的作用,再一步步实现你要的需求~

先搞懂现有查询做了什么

你现在的SQL是先通过子查询对bridgeToken和appName分组去重(确保每个token下的appName不重复),然后外层按bridgeToken统计每个token对应的appName数量,得到的是每个bridgeToken拥有的白名单应用数,结果里的WhitelistNames就是这个数值。

实现统计WhitelistNames的计数需求

你要的是统计「不同的WhitelistNames值分别出现了多少次」——也就是有多少个bridgeToken对应5个白名单应用,多少个对应13个,对吧?只需要在现有查询外层再套一层聚合分组就可以了,这里我用更易读的CTE(公共表表达式)来改写,适合入门理解:

WITH token_app_counts AS (
  -- 第一步:去重每个bridgeToken对应的appName
  SELECT bridgeToken, appName 
  FROM `DB` 
  GROUP BY bridgeToken, appName
),
whitelist_per_token AS (
  -- 第二步:计算每个bridgeToken的白名单应用数
  SELECT COUNT(appName) AS WhitelistNames, bridgeToken 
  FROM token_app_counts
  GROUP BY bridgeToken
)
-- 第三步:统计每个WhitelistNames对应的bridgeToken数量
SELECT WhitelistNames, COUNT(bridgeToken) AS count_of_bridgeTokens
FROM whitelist_per_token
GROUP BY WhitelistNames
ORDER BY count_of_bridgeTokens DESC;

结果示例

如果你的原始结果是:

Row bridgeToken WhitelistNames
1 11111 5
2 22222 13
3 33333 5
4 44444 5

那新查询会返回:

WhitelistNamescount_of_bridgeTokens
53
131

这样你就能清楚看到,有3个bridgeToken对应5个白名单应用,1个对应13个啦~

顺便提一句:BigQuery标准SQL里推荐用反引号`包裹表名,而不是方括号[],所以我把你的[DB]改成了`DB`,如果你的表在特定数据集里,记得写成`dataset_name.DB`哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:09:32