Sql 按空格分隔的值分组并计数
我有一个表,其中包含了为我们的客户收集的信息,我基本上需要找到最常用的50个单词的列表 该表称为Sql 按空格分隔的值分组并计数,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个表,其中包含了为我们的客户收集的信息,我基本上需要找到最常用的50个单词的列表 该表称为消息,键入的消息为消息。实际上,我想选择所有行,递归地按空格分割每条消息,以获得所有单词,按每个单词分组,并计数它们。我在用一个空间递归地分割,有什么想法吗 DECLARE @Table TABLE (userID INT,MESSAGE NVARCHAR(MAX)) INSERT INTO @Table SELECT '1','word1 word2 word3' UNION ALL SELECT
消息
,键入的消息为消息
。实际上,我想选择所有行,递归地按空格分割每条消息
,以获得所有单词,按每个单词分组,并计数它们。我在用一个空间递归地分割,有什么想法吗
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上的许多示例中找到该函数。例如,请参见此处:您不需要递归拆分…拆分是线性的。只有在使用递归函数拆分拆分时,拆分才是线性的。所以你需要复发。