gpt4 book ai didi

mysql - 不能做 SUM 的 SUM 吗?

转载 作者:行者123 更新时间:2023-11-29 08:49:14 25 4
gpt4 key购买 nike

以下查询在计算“ratingValue”时似乎存在问题,因为 SUM 中存在 SUM(h.liked)。

SELECT d.itemID1 as item, 
sum(d.sum + d.count*SUM(h.liked))/sum(d.count) as ratingValue
FROM history h, dev d
WHERE h.userID=:id_user
AND d.itemID1<>h.itemID
AND d.itemID2=h.itemID
GROUP BY d.itemID1,h.itemID

为了更好地理解,这是原始且有效的查询(来自 Slop One 算法):

我只是用“历史”替换​​“评级”表,因为在我的例子中,r.atingValue 是用户对 itemID 给予的所有“喜欢”的总和(=> r.atingValue = SELECT SUM(liked)来自历史记录 GROUP BY h.itemID ):

SELECT d.itemID1 as item, 
sum(d.sum + d.count*r.ratingValue)/sum(d.count) as ratingValue
FROM rating r, dev d
WHERE r.userID=$userID
AND d.itemID1<>r.itemID
AND d.itemID2=r.itemID
GROUP BY d.itemID1

最佳答案

正如错误消息所示,您无法使用下一个聚合函数。我认为你的意思是:

SELECT d.itemID1 as item, 
sum(d.sum + d.count*h.sumliked)/sum(d.count) as ratingValue
FROM (select h.userId, h.itemId, sum(h.liked) as sumliked
from history h
group by h.userId, h.itemId
) h join
dev d
on h.userID=:id_user AND
d.itemID1<>h.itemID AND
d.itemID2=h.itemID
GROUP BY d.itemID1

也就是说,您需要单独进行聚合,在本例中使用子查询。我还修复了您的查询中的联接语法。

关于mysql - 不能做 SUM 的 SUM 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11751567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com