如何动态统计->分隔字段中各值出现次数并获取Top N结果
解决方案
要实现动态统计所有值的出现次数并获取Top3结果,可以通过拆分字符串+展开数组+分组统计+排序取前的方式实现,以下是适配你场景的SQL语句(以BigQuery为例):
基础统计语句(获取各值次数)
SELECT word, COUNT(*) AS 出现次数 FROM `你的表名`, UNNEST(SPLIT(text, ' -> ')) AS word GROUP BY word ORDER BY 出现次数 DESC
生成预期格式的Top3结果
如果需要直接输出你示例中的Top N- 值|次数格式,可以结合窗口函数生成序号:
SELECT CONCAT('Top ', ROW_NUMBER() OVER(ORDER BY 出现次数 DESC), '- ', word, ' |', 出现次数) AS 结果 FROM ( -- 内层先统计各值的总出现次数 SELECT word, COUNT(*) AS 出现次数 FROM `你的表名`, UNNEST(SPLIT(text, ' -> ')) AS word GROUP BY word ORDER BY 出现次数 DESC LIMIT 3 -- 只保留前3条 )
语句说明
SPLIT(text, ' -> '):将每行的字符串按->分隔符拆分成数组;UNNEST(...) AS word:把数组展开为单独的行,每个拆分出的值占一行;GROUP BY word + COUNT(*):按值分组,统计每个值的总出现次数;ORDER BY 出现次数 DESC + LIMIT 3:按次数降序排序,取出现次数最多的前3个值;ROW_NUMBER() + CONCAT:生成Top序号并拼接成你需要的输出格式。
内容的提问来源于stack exchange,提问作者HAIDER TAYYAB
相关产品推荐
相关产品推荐

