我有一个文本列,其中包含用户使用的主题标签。每行包含不同数量的主题标签,由空格分隔,如下所示:
USERS | HASHTAG COLUMN:
------------------------
user1 | hashtag1 hashtag2
user2 | hashtag2
user1 | hashtag1 hashtag2 hashtag3 hashtag4
我想获得最常用的主题标签,在这种情况下,我想要的输出应该是:
OCCURRENCES | TAG
----------------------
3 | hashtag2
2 | hashtag1
1 | hashtag3
1 | hashtag4
我没有IDEA如何获得它,任何帮助非常感谢。谢谢
答案 0 :(得分:1)
假设您无法将数据库重新设计为1NF
,那么您可以在bash
中执行此操作:
echo "select hashtag from table" | \
mysql --user=foo --password=bar --host=hostname --database=dbname --skip-column-names | \
sed -e 's/ /\n/g' | \
sort | \
uniq -c | \
sort -rn
sed
命令将每个#标签放在自己的行上。第一个sort
命令将所有重复的主题标签放在一起,以便...... uniq
命令可以计算每个重复标签的所有出现次数。第二个sort
命令按计数以反向数字顺序排序输出。