我有 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