比较where子句中的两个sum函数

时间:2017-08-13 16:39:26

标签: sql sql-server

我想检查用户在所有个人照片中收到的喜欢数量至少是他们被标记的群组照片中收到的喜欢数量的两倍。 如果用户未在任何团体照片中被标记,但在收到至少一张照片的个人照片中被标记,则会返回该照片。

我的问题是:   如何在2个和函数之间进行比较 在嵌套查询中返回sum的一个结果并与外部查询进行比较。 我可以设置一个辅助变量来输入其中的和值并进行比较吗? 谢谢你们的帮助:)

 Select distinct UIP.userID
    From tblUserInPersonalPic UIP
    where **sum(UIP.numOfLikes) over (Partition by UIP.userID)*0.5** > 
            (Select distinct U.userID, sum(P.numOfLikes) over (Partition by U.userID)
                                From tblgroupPictures P left outer join 
                                tblUserInGroupPic U On P.picNum=U.picNum
                                group by U.userID,P.numOfLikes,P.picNum)

3 个答案:

答案 0 :(得分:1)

有点难以确定,当然我无法测试我的答案, 但我认为你可以通过几个左连接来实现,分组和拥有:

SELECT Personal.UserId
FROM tblUserInPersonalPic Personal
LEFT JOIN tblUserInGroupPic UserInGroup ON Personal.userID = UserInGroup.UesrId
LEFT JOIM tblgroupPictures GroupPictures ON UserInGroup.picNum = GroupPictures.picNum
GROUP BY Personal.userID
HAVING SUM(GroupPictures.numOfLikes) * 2 <  SUM(Personal.numOfLikes)

请注意:发布sql问题时,最好提供样本数据作为DDL + DML(创建表格+插入到语句中)和期望的结果,以便谁回答你可以在发布之前测试答案。

答案 1 :(得分:0)

尝试使用两个ctes..pseudo代码。另外注意第二个查询中的不同甚至不起作用,因为你返回两列,所以我在下面改了它,这样你就可以得到那个列

mongo-hadoop-*.jar

答案 2 :(得分:0)

您无法在where子句中使用窗口函数。在子查询中定义它:

select  *
from    (
        select  sum(...) over (...) as Sum1
        ,       OtherColumn
        from    YourTable
        ) sub
where   Sum1 < (...your subquery...)