
Explanation:

包括的かつ詳細な説明
私たちは、Fabricウェアハウス内のEmployeeテーブルとContractテーブルを非正規化するためのT-SQLクエリを作成する任務を負っています。
要件の内訳
契約テーブルの一致する行から属性を含める
つまり、従業員IDに基づいて従業員と契約者を連携させる必要があるということです。
従業員テーブルのすべての行が保持されていることを確認してください。
これには、従業員テーブルから契約テーブルへの左外部結合が必要です。従業員に契約がない場合でも、従業員レコードを含める必要があります。
従業員数が2人を超えるすべての契約タイプについて、契約タイプごとの従業員総数を返します。つまり、次のことを行う必要があります。
契約タイプ別にグループ化
重複しない従業員IDの数をカウントします。
カウントが2を超えるグループをフィルタリングします。
集計結果を絞り込むには、WHERE句ではなくHAVING句を使用します。
クエリが完了しました
結果が (
選択
e.従業員ID、
e.従業員名、
e.従業員の役職、
c.契約タイプ、
c.開始日
従業員ASから
LEFT OUTER JOIN Contract AS c
c.EmployeeID = e.EmployeeID
)
選択
契約タイプ、
従業員IDを重複なくカウントし、合計従業員数とする
結果から
契約タイプ別にグループ化
重複のない従業員IDの数が2より大きいこと。
これが正しい理由
LEFT OUTER JOIN を使用すると、契約内容に関わらず、すべての従業員が対象に含まれることが保証されます。
HAVING句を使用すると、集計グループを従業員数でフィルタリングできます。
このクエリは、契約タイプ、開始日(非正規化で要求されたとおり)、および集計された従業員数を返します。
参考文献
Microsoft Fabric における T-SQL JOIN
集計関数とHAVING句
Fabricウェアハウスにおける非正規化のベストプラクティス