如何查询使用窗口函数获得的分区?

时间:2016-07-19 15:19:28

标签: sql sql-server database

我有一个具有以下结构的表

------------------------------------
|Company_ID| Company_Name| Join_Key|
------------------------------------
|     1    | ACompany    | AC      |
|     2    | BCompany    | BC      |

虽然这个表没有很多列,但有大约400万行。

我想计算这些公司名称的一些字符串距离计算。我有以下查询

select a.Company_Name as Name1,
       b.Company_Name as Name2,
       Fuzzy_Match(a.Company_Name, b.Company_Name, 'JaccardDistance') as Jaccard --this is a custom function
from [Companies] a, [Companies] b

虽然这样的东西适用于较小的数据库,但由于我的数据库太大,我无法在合理的时间内完成所有组合。所以我想到了用窗口函数对数据库进行分区。

select Company_Name,
       ROW_NUMBER() over(partition by Join_Key order by Join_Key asc) as row_num
       Join_Key
from [Companies]

这给了我一个按其join_key编号和分区的公司列表,但我不确定的是如何做这两件事。

如何执行交叉连接并计算每个分区的字符串相似性度量,以便我只比较那些具有“AC'作为他们的连接键?

0 个答案:

没有答案