Tal*_*les 5 mysql select count
我有一个表格,可以存储很多Twitter推文的信息,包括推文文本和发推文推文的用户的屏幕名称.推文包含主题标签(以#开头),我想计算特定用户推文的主题标签数量:
tweet_id | tweet_text | screen_name |
--------------------------------------------------------------------------------------------
1 | #hashtag1 #otherhashtag2 #hashtag3 some more text | tweeter_user_1 |
2 | some text #hashtag1 #hashtag4 more text | tweeter_user_2 |
3 | #hashtag5 #hashtag1 @not a hashtag some#nothashtag | tweeter_user_1 |
4 | #hashtag1 with more text | tweeter_user_3 |
5 | #otherhashtag2 #hashtag3,#hashtag4 more text | tweeter_user_1 |
Run Code Online (Sandbox Code Playgroud)
如果我要计算tweeter_user_1的主题标签,我期望的结果是8,如果我想要tweeter_user_3的主题标签它应该返回1.如果我的表名是推文我怎么能这样做.
我试过这个:SELECT COUNT( * ) FROM tweets WHERE( LENGTH( REPLACE( tweet_text, '#%', '@') = 0 ) ) AND screen_name = 'tweeter_user_1'但它没有用
如果tweeter_user_1的结果也是9,我会很高兴:D
这应该给你一个screen_names列表和他们使用的所有主题标签的总数.
SELECT foo.screen_name, SUM(foo.counts) FROM
(
SELECT screen_name,
LENGTH( tweet_text) - LENGTH(REPLACE(tweet_text, '#', '')) AS counts
FROM tweet_table
) as foo
GROUP BY foo.screen_name
Run Code Online (Sandbox Code Playgroud)
但是......如果表格很大,这是一个令人讨厌的问题.如果您只需要单个用户的计数,我可以在内部选择中指定特定用户.像这样:
SELECT foo.screen_name, SUM(foo.counts) FROM
(
SELECT screen_name,
LENGTH( tweet_text) - LENGTH(REPLACE(tweet_text, '#', '')) AS counts
FROM tweet_table WHERE screen_name = 'tweeter_user_1'
) as foo
GROUP BY foo.screen_name
Run Code Online (Sandbox Code Playgroud)