在我的数据库中,一个表的名称为tableA.表的结构在这里给出
id from message
1 23 hi how are you
2 65 hey whats going on
3 74 enjoying the vacation with family
4 23 here in Australia its chilly season
5 74 hey sam whats the plan for tomorrow
请参阅id是auto-increment.from列,说明哪个用户正在发送消息,消息列包含消息。我想知道哪些用户发送了多少单词。所以我必须首先计算行中的单词然后我必须搜索整个列并找到重复的位置并为该特定用户添加单词。在我的示例中,您可以看到23和74的两个地方即将到来。我希望我的输出为
from nos
23 10
65 4
74 12
在这里你可以看到23有两行,所以我添加了两行的单词,就像74也有两行。请指导
答案 0 :(得分:7)
您可以通过此查询统计单词 -
Select length('string')-length(replace('string',' ',''))+1;
对于您的表格,您可以将其作为
Select *,(length(message)-length(replace(message,' ',''))+1) from table_name
这将显示其中每个msg的字数。
要获得所需的结果,请尝试使用
Select `from`, sum((length(message)-length(replace(message,' ',''))+1)) as nos from table_name group by `from`
答案 1 :(得分:1)
假设单词由单个空格分隔,您可以使用:
SUM( LENGTH(message) - LENGTH(REPLACE(message, ' ', ''))+1)
得到字数。由于您要对来自每个用户的所有消息求和,因此您需要按用户(从列)进行分组。你最后应该有这样的东西:
select `from`, SUM( LENGTH(message) - LENGTH(REPLACE(message, ' ', ''))+1) as nos
from tableA
group by `from`
答案 2 :(得分:0)
SELECT from, SUM(LENGTH(message) - LENGTH(REPLACE(TRIM(message), ' ', ''))+1) FROM my_table GROUP BY from;