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

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

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

分析输出:
文字 频次
菁 3
赵 2
天 2
长 2
luci 2
安 1
文 1
李 1
常 1
997 次点击
所在节点    问与答
9 条回复
waytoshine
2020-08-25 14:28:45 +08:00
要入坑大数据的感觉
optional
2020-08-25 14:43:53 +08:00
count partition by
waytoshine
2020-08-25 14:52:41 +08:00
@optional #2 这个应该不能拆分值来进行统计吧?只能统计完全相同的值
ipwx
2020-08-25 15:20:01 +08:00
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-08-25 16:46:44 +08:00
用 es 做吧,mysql 搞这个太慢了
qiayue
2020-08-25 17:06:28 +08:00
10 亿条数据,显然不能只用数据库做统计,建议程序预处理
dtgxx
2020-08-25 17:16:59 +08:00
放 hive 里,用 sparksql 跑。。。
Vegetable
2020-08-25 17:43:13 +08:00
用程序做应该还可以,就是数据量太大了。
xupefei
2020-08-25 17:48:13 +08:00
十亿条数据只能用 spark sql 了

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

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

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

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

© 2021 V2EX