我在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
...也就是說,3出從文件214 3張幻燈片的是在部分527和4出從文件223的6張幻燈片是在第527部分。
我最初試圖比較使用OVER (PARTITION BY ...)
子句的行的組,但無法弄清楚。
我該如何做這兩個查詢?
但對於重疊列 –
@ShehzadBilal是在第二個查詢。 –
作爲註釋,在SQL Server中,整數上的「/」返回一個整數,因此重疊將爲0或1.拋出「* 1.0」轉換爲浮點數。 –