gpt4 book ai didi

mysql - 如何将SQL查询变成SQL函数

转载 作者:行者123 更新时间:2023-11-29 14:32:42 24 4
gpt4 key购买 nike

所以我有以下 SQL 代码来计算两个用户评分之间的 PIL 逊相关性:

 select  @u1avg:=avg(user1_rating), 
@u2avg:=avg(user2_rating),
@u1sd:=stddev(user1_rating),
@u2sd:=stddev(user2_rating)
from
(select r1.userId as User1_id,r1.rating as User1_rating,
r2.userId as User2_id,r2.rating as User2_rating

from mydb.ratings r1 join mydb.ratings r2 on r1.itemId = r2.itemid
where r1.userId=1 and r2.userId=2) sample;


select (1/(count(r1.rating-1)))*sum(((r1.rating-@u1avg)/@u1sd)*((r2.rating-@u2avg)/@u2sd))*(count(r1.rating)/(1+count(r1.rating)))

from mydb.ratings r1 join mydb.ratings r2 on r1.itemId = r2.itemid
where r1.userId=1 and r2.userId=2;

我想把它变成一个函数,例如 corr(A,B)任何帮助都会有用的。

我遇到的问题是,它说样本不允许或类似的内容,但是如果我删除样本,我会收到一条错误,指出每个表都必须有别名。

最佳答案

我认为您可以取消第一个查询中的派生表,这将消除该特定错误 -

SELECT
@u1avg:=avg(r1.rating),
@u2avg:=avg(r2.rating),
@u1sd:=stddev(r1.rating),
@u2sd:=stddev(r2.rating)
FROM mydb.ratings r1
INNER JOIN mydb.ratings r2
ON r1.itemId = r2.itemId
WHERE r1.userId=1
AND r2.userId=2;

SELECT (1/(COUNT(r1.rating-1)))*SUM(((r1.rating-@u1avg)/@u1sd)*((r2.rating-@u2avg)/@u2sd))*(COUNT(r1.rating)/(1+COUNT(r1.rating)))
FROM mydb.ratings r1
INNER JOIN mydb.ratings r2
ON r1.itemId = r2.itemid
WHERE r1.userId=1
AND r2.userId=2;

关于mysql - 如何将SQL查询变成SQL函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9709901/

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