在SQL Server中查找相关性
我只是想知道是否可以完全在SQLServer中完成以下操作 我有一个表,有3列-句子ID PK,任意长度的句子字符串,这些是在句子中发现的2或3个单词模式 我需要找出所有不同模式之间的相关性 如果我在外部使用python和ODBC,我需要完成以下步骤 对于每个不同的模式 获得模式的计数 找到所有具有该模式的句子ID 获取上述句子ID中出现的所有模式的计数 在步骤3中,将当前模式及其计数作为列追加到表中。 继续将上表作为行追加到结果表在SQL Server中查找相关性,sql,sql-server-2008,Sql,Sql Server 2008,我只是想知道是否可以完全在SQLServer中完成以下操作 我有一个表,有3列-句子ID PK,任意长度的句子字符串,这些是在句子中发现的2或3个单词模式 我需要找出所有不同模式之间的相关性 如果我在外部使用python和ODBC,我需要完成以下步骤 对于每个不同的模式 获得模式的计数 找到所有具有该模式的句子ID 获取上述句子ID中出现的所有模式的计数 在步骤3中,将当前模式及其计数作为列追加到表中。 继续将上表作为行追加到结果表 接下来,让我假设模式遵循类似表达式的形式。而且,你只想计算一个
接下来,让我假设模式遵循类似表达式的形式。而且,你只想计算一个句子的模式一次 如果是这样,您可以执行以下操作。获取所有句子和模式之间的匹配:
with sp as (
select s.sentenceID, p.pattern, count(*) over (partition by p.pattern) as NumSentences
from Sentences s join
Patterns p
on s.sentence like p.pattern
)
select sp1.pattern, sp2.pattern,
sp1.pattern as Pattern1Count, sp2.pattern as Pattern2Count,
count(*) as BothCount
from sp sp1 join
sp sp2
on sp1.pattern < sp2.pattern -- <= if you want counts for a single pattern
group by sp1.pattern, sp2.pattern
您没有明确说明您想要什么样的输出,但这应该足够了
因此,通过一些合理的假设,您可以在SQL中执行此操作。最有可能在SQL中执行此操作,因为如果找不到基于集合的方法,您甚至可以回退到使用更多带游标的过程联邦代码。但在步骤4中,不清楚如何构造多个模式。您是否将重复列非规范化,或者是否存储在单独的一对多表中,等等。模式是如何表示的?你能举一些例子吗?你肯定可以用光标来做,需要一些示例数据和结果,看看是否有一种基于集合的方法。