2つのテーブルがあります(このクエリに必要なのはテーブル列の一部のみです):
Items: Id int, OwnerId int
ItemsRelations: RelationId int, ItemId Int (FK Items(Id))
OwnerIdごとに、比率関数の結果を計算する必要があります。ItemsRelationstableへのリンクを持つユーザー要素の数/すべてのユーザー要素の数。
このクエリを作成しましたが、速度が遅く、最適ではありません。それを行うためのより簡単でより速い方法はありますか?
SELECT OwnerId , (100 * SUM(HasRelation))/COUNT(Id) AS Ratio
FROM (
SELECT
oi.OwnerId,
oi.Id,
(CASE WHEN SUM(ir.Id) > 0 THEN 1 ELSE 0 END) HasRelation
FROM Items AS oi
LEFT JOIN ItemsRelations AS ir ON ir.ItemId = oi.Id
GROUP BY oi.Id, oi.OwnerId) tempTab
GROUP BY OwnerId