Twitter热门Hashtag统计查询无结果排查求助
问题分析与解决方法
你的SQL查询无结果的核心问题是WHERE子句的匹配逻辑错误:
- 原语句中
WHERE full_data.text = '#%'是精确匹配整个文本字段等于#%,但你的数据里是文本中包含以#开头的标签,并非整个字段等于该值,所以没有符合条件的记录被筛选出来。
修正后的查询语句
SELECT word, COUNT(*) AS word_count FROM ( SELECT UNNEST(STRING_TO_ARRAY(text, ' ')) AS word FROM full_data ) AS words WHERE word LIKE '#%' -- 过滤出以#开头的标签 GROUP BY word ORDER BY word_count DESC NULLS LAST LIMIT 1000;
额外优化说明
如果你的文本中存在带标点的标签(比如#hello!),可以用正则清理掉无关标点,避免统计重复的标签:
SELECT cleaned_word, COUNT(*) AS word_count FROM ( SELECT REGEXP_REPLACE(UNNEST(STRING_TO_ARRAY(text, ' ')), '[^a-zA-Z0-9#]', '', 'g') AS cleaned_word FROM full_data ) AS words WHERE cleaned_word LIKE '#%' AND cleaned_word != '#' -- 排除单独的#符号 GROUP BY cleaned_word ORDER BY word_count DESC NULLS LAST LIMIT 1000;
内容的提问来源于stack exchange,提问作者counterculture
相关产品推荐
相关产品推荐

