如何统计数据库字段值的字符串的出现频率并排序?

2020 年 8 月 25 日
 waytoshine
如题,任何实现方式都可以
假如有一张表,有年龄、名字、性别三个字段,存了 10 亿条数据
名字的类型有三种可能:人名( 2-8 个汉字)、网名(中英混合、纯中文、纯英文,长度不限)
如何在这张表中查找汉字或者英文(英文字符串)的出现频率并排序?

例如:
年龄 性别 名字
23 女 安菁
23 男 赵天长
23 女 常菁文
23 女 赵菁
23 男 李天长
23 男 lucio
23 男 lucian

分析输出:
文字 频次
菁 3
赵 2
天 2
长 2
luci 2
安 1
文 1
李 1
常 1
1621 次点击
所在节点    问与答
9 条回复
waytoshine
2020 年 8 月 25 日
要入坑大数据的感觉
optional
2020 年 8 月 25 日
count partition by
waytoshine
2020 年 8 月 25 日
@optional #2 这个应该不能拆分值来进行统计吧?只能统计完全相同的值
ipwx
2020 年 8 月 25 日
postgres 的话试试这个:

SELECT t2.c, COUNT(t2.c) FROM <your table> AS t, regexp_split_to_table(t.<your column>, '') AS t2(c) GROUP BY t2.c;
Cookieeeeee
2020 年 8 月 25 日
用 es 做吧,mysql 搞这个太慢了
qiayue
2020 年 8 月 25 日
10 亿条数据,显然不能只用数据库做统计,建议程序预处理
vverr
2020 年 8 月 25 日
放 hive 里,用 sparksql 跑。。。
Vegetable
2020 年 8 月 25 日
用程序做应该还可以,就是数据量太大了。
xupefei
2020 年 8 月 25 日
十亿条数据只能用 spark sql 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/701276

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX