首先,我要说我对rails和开发还不熟悉。
概述
我有一个简单的推荐系统,我想计算每个订户推荐其他人的次数,然后根据推荐次数按降序排列所有订户。
细节
这是我的Subscribers
表:
| id | email | referred_by |
referred_by
包含引用订阅服务器的subscriber_id
。我想要的是一个方法/查询,它遍历表中的每个订阅服务器,并:
统计其ID在
referred_by
列中出现的次数。按用户拥有的转介总数订购用户。
我是按照下面的思路思考的,但我的部分问题是我不知道在哪里以及如何测试代码库之外的方法和查询,所以我不知道如何测试。我假设在控制台中,但我不知道如何在那里执行多部分方法或查询。
Subscriber.all.each do |referrer|
Subscriber.all.each do |subscriber|
if referrer.id == subscriber.referred_by
referrals += 1
else
next
end
end
end
# Then order descending
最佳答案
Select A.id
,A.email
,case when B.referrals is null then 0 else B.referrals end as referrals
From YourTable A
Left Join (
Select referred_by,count(*) as referrals
From YourTable
Where referred_by is not null
Group By referred_by
) B
On A.id = B.referred_by
Order By B.referrals Desc,A.email
会退回这样的东西
id email referrals
4 [email protected] 3
1 [email protected] 2
2 [email protected] 0
3 [email protected] 0
编辑
如果要排除非引用(零计数),请将左联接更改为内部联接
关于sql - 计算并订购每个推荐人的推荐数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41317407/