我有几个具有同名表的模式,我想快速检索数百个组中的文本数据(例如,词频)的一些统计信息。
以下是一个示例查询:
SELECT subreddit,
round(avg(CASE WHEN text ILIKE '%trump%' THEN 1
ELSE 0 END),
5) AS trump_relative_frequency,
count(*)
FROM politics.comments
GROUP BY subreddit
HAVING count(*) > 100
ORDER BY trump_relative_frequency DESC;
subreddit | trump_relative_frequency | count
-----------------------+--------------------------+--------
NeverTrump | 0.34457 | 267
BannedFromThe_Donald | 0.28261 | 138
askhillarysupporters | 0.26429 | 140
Impeach_Trump | 0.25210 | 357
AmericanPolitics | 0.24606 | 317
AskThe_Donald | 0.24561 | 1653
AskTrumpSupporters | 0.24044 | 3215
KasichForPresident | 0.23519 | 591
HillaryForAmerica | 0.21578 | 431
WomenForTrump | 0.20280 | 143
Republican | 0.19994 | 3356
EnoughTrumpSpam | 0.19972 | 15457
我想快速执行除'trump'
以外的各种字符串的类似查询,但似乎我必须声明返回的列名,技术上可以根据参数确定,但是不是在你只构建函数时。
我看到的唯一解决方法是返回一个包含搜索参数列的表,另一个包含包含subreddit:count键值对的HSTORE的表。这不是理想的,因为我想将数据导出到具有上面给定列名的CSV,而我唯一的其他解决方案是使用Python或其他编程语言通过命令行脚本执行查询。
有没有更好的方法来解决这个问题?