我有一个表格,其中包含为客户提供的消息,我基本上需要查找最常用单词的前50个列表。
该表名为Messages
,键入的消息为Message
。实际上,我希望SELECT
所有行,按空格递归地分割每个Message
以获取所有单词,每个单词GROUP BY
和COUNT
。我正在努力通过空间递归分裂 - 任何想法?
答案 0 :(得分:3)
DECLARE @Table TABLE (userID INT,MESSAGE NVARCHAR(MAX))
INSERT INTO @Table
SELECT '1','word1 word2 word3' UNION ALL
SELECT '1','word2 word5 word4' UNION ALL
SELECT '2','word5 word2 word1' UNION ALL
SELECT '2','word1 word2 word3'
; WITH c AS(
SELECT N.Value,COUNT(N.Value) Cnt FROM
@Table T
CROSS APPLY
dbo.split(T.message,' ') N
GROUP BY N.Value
)
SELECT c.Value,c.Cnt
FROM c
ORDER BY Cnt DESC
结果:
注意:您需要拆分功能,您可以在Internet的众多示例中找到它。例如,请看这里:Split function equivalent in T-SQL?