1

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つのクエリを実行するにはどうすればよいですか?

4

2 に答える 2

3

両方のクエリが可能です!


最初のクエリ:

SELECT s.SectionID,
       f.FileID
FROM SectionSlide s
INNER JOIN FileSlide f ON s.SlideID = f.SlideID
GROUP BY s.SectionID, f.FileID

また

SELECT DISTINCT s.SectionID,
                f.FileID
FROM SectionSlide s
INNER JOIN FileSlide f ON s.SlideID = f.SlideID

2番目のクエリ:

select s.SectionID, f.FileID,
       round(((count(distinct f.SlideID)*1.0) / aux.total), 2) as 'Overlap'
from SectionSlide s
inner join FileSlide f on f.SlideID = s.SlideID
inner join (select f.FileID, count(f.SlideID) as 'total'
            from FileSlide f
            group by f.FileID) aux on aux.FileID = f.FileID
group by f.FileID, s.SectionID, aux.total
于 2012-06-21T14:41:53.407 に答える
2

私はあなたの質問に少し混乱していますが、以下のクエリはあなたにあなたの望む結果を与えるはずです:

SELECT DISTINCT fs.FileId, ss.SectionId
FROM FileSlide fs
INNER JOIN SectionSlide ss
ON fs.SlideId= ss.SlideId
于 2012-06-21T14:44:28.327 に答える