我正在分析一个名为'RawDataDescriptions'的表格中的数据,其中有一个名为'description'的字段供用户输入。我正在寻找一种将描述按短语或经常出现的字符串进行广泛分类的方法(包括它们出现的次数)。我没有特定的单词或短语需要查找,可以使用'like'语句,而是在字段之间寻找共性。在查找其他问题时,我找到了一个查询,我对自己的表格进行了调整以获取最常见的单词(如下所示),但是仅有一个单词提供了很少 -如果有任何-关于描述的见解。是否可能制作一个查询,提供短语而不仅仅是单个单词的计数呢?如果可能的话,它的主要组成部分会是什么?
WITH E1(N) AS
(
SELECT 1
FROM (VALUES
(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)
) t(N)
),
E2(N) AS (SELECT 1 FROM E1 a CROSS JOIN E1 b),
E4(N) AS (SELECT 1 FROM E2 a CROSS JOIN E2 b)
SELECT
x.Item,
COUNT(*)
FROM RawDataDescriptions p
CROSS APPLY (
SELECT
ItemNumber = ROW_NUMBER() OVER(ORDER BY l.N1),
Item = LTRIM(RTRIM(SUBSTRING(p.[Description], l.N1, l.L1)))
FROM (
SELECT s.N1,
L1 = ISNULL(NULLIF(CHARINDEX(' ',p.[Description],s.N1),0)-
s.N1,4000)
FROM(
SELECT 1 UNION ALL
SELECT t.N+1
FROM(
SELECT TOP (ISNULL(DATALENGTH(p.[Description])/2,0))
ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM E4
) t(N)
WHERE SUBSTRING(p.[Description] ,t.N,1) = ' '
) s(N1)
) l(N1, L1)
) x
WHERE x.item <> ''
GROUP BY x.Item
ORDER BY COUNT(*) DESC
*编辑 - 不可行。期望的替代结果:
示例表格
Id | Description
---+--------------------------
01 | Customer didn't like it
02 | Person liked it
03 | Person didn't like it
04 | Client didn't like it
05 | person liked it
@Parameter = 3
期望的结果:
string | count
-----------------+-------
didn't like it | 3
Person liked it | 2
编辑2**:原始问题是可以解决的 - 请参考答案。