我在 Sql Server 中有两个表,一个包含文件的 ID 和这些原始文件中包含的幻灯片,另一个用于“部分”,可以包含来自一个或多个文件的幻灯片,可能以任意顺序、重复和/或消除了一些幻灯片。
示例数据如下所示:
FileSlide
FileID SlideID
214 716
214 717
214 718
223 770
223 771
223 772
223 773
223 774
223 775
SectionSlide
SectionID SlideID
527 716
527 718
527 717
527 770
527 773
527 774
527 775
527 774
我最初不需要“SectionFile”关系,但现在我确实需要该信息来查看为特定部分选择了哪些文件,而不管幻灯片详细信息如何。我的问题是检查SectionSlide
和FileSlide
表之间的幻灯片 ID,以查看任何给定文件节对中的幻灯片之间是否存在重叠。我想找到所有共享幻灯片的文件-节对。
对于上面的示例数据,输出将如下所示:
SectionFileCandidates
SectionID FileID
527 214
527 223
产生此输出的查询是什么?
是否可以计算一个指标来指示该部分中存在原始文件幻灯片的比例?
对于上面的示例数据,输出将如下所示:
SectionFileCandidates
SectionID FileID Overlap
527 214 1.00
527 223 0.67
...也就是说,文件 214 中的 3 张幻灯片中有 3 张在第 527 节中,而文件 223 中的 6 张幻灯片中有 4 张在第 527 节中。
我最初试图使用该OVER (PARTITION BY ...)
子句比较行组,但无法弄清楚。
我该如何做这两个查询?