我有两个表(以及一个非聚集索引),可以使用以下命令创建:
CREATE TABLE GroupTable
(
  GroupKey int NOT NULL PRIMARY KEY, 
  RecordCount int NOT NULL,
  GroupScore float NOT NULL
);
CREATE TABLE RecordTable
(
  RecordKey varchar(10) NOT NULL, 
  GroupKey int NOT NULL,
  PRIMARY KEY(RecordKey, GroupKey)
);
CREATE UNIQUE INDEX ixGroupRecord ON RecordTable(GroupKey, RecordKey);
从技术上讲,我的表略有不同,并且我要加入其他一些表,但这是适合我的情况的代理。
- 我想选择所有
GroupKeys不是另一个子集的子集GroupKey。 - 对于给定的超集,我想获取其
GroupScore所有子集(包括自身)的最大值。 - 在a 
GroupKey包含与RecordKeys另一个完全相同的情况下GroupKey(s),则仅GroupKeys会抓取其中一个(与哪个无关)。 - 任何
GroupKey具有完全相同的RecordKeys另一个GroupKey(s)也会有相同的GroupScore。 - 不相关的
GroupKeys也可以具有相同的分数。 
下面是一个示例来说明我在问什么:
              GroupTable                          RecordTable
GroupKey    RecordCount   GroupScore         RecordKey    GroupKey
------------------------------------         ---------------------
  1              3            6.2                A          1
  29             2            9.8                A          29
  95             3            6.2                A          95
  192            4            7.1                A          192
                                                 B          1
                                                 B          29
                                                 B          95
                                                 B          192
                                                 C          1
                                                 C          95
                                                 D          192
                                                 E          192
我希望输出如下:
GroupKey    RecordCount    GroupScore
-------------------------------------
  1              3             9.8
  192            4             9.8
GroupTable大约有7500万行,RecordTable大约有115M行;但是,在连接和WHERE谓词之后,给定的一天大约有2万行。
如果这个问题无关紧要,我深表歉意,但是出于某种原因,我真的很努力。