SQL Serverに2つのテーブルがあります。1つはファイルのIDとそれらの元のファイルに含まれるスライドを含み、もう1つは1つ以上のファイルからのスライドを含むことができる「セクション」用です。一部のスライドが削除されています。
サンプルデータは次のようになります。
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
私の問題は、とテーブルの間のスライドIDを調べて、FileSlide
特定のファイルとセクションのペアのスライド間に重複があるかどうかを確認することです。スライドを共有するすべてのファイルとセクションのペアを見つけたいと思います。
上記のサンプルデータの場合、出力は次のようになります。
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 ...)
私はもともと句 を使用して行のグループを比較しようとしていましたが、それを理解できませんでした。
これらの2つのクエリを実行するにはどうすればよいですか?