计算每个用户的总会员数

时间:2018-11-30 22:47:32

标签: mysql sql group-by

enter image description here我一直在寻找一个简单的SQL查询来解决一个非常简单的问题。我一直在进行一个非常简单的社交共享活动,我们有一个包含2个字段的mysql数据库:email和AffiliateID

SELECT
users.Email, users.ID,
users.AffiliateID,
Count(users.AffiliateID) as afid
from users
order by afid desc

当我运行此查询时,它仅返回1条记录,其中正确的计数仅是最高计数。

我想要的是按数据库中具有“ affiliateID”记录最多的人排序的所有用户的列表。

这将告诉我们谁在共享竞赛中获得一等奖。

这里有一些类似的问题,但是这些解决方案似乎不适用于这种情况。

我想要的是系统中所有用户的降级输出,并由其父级(赞助商)排名,因此我们可以构建类似于“排行榜”的东西

Group By Count and Total Count

MySQL: Count total in Group by Query

谢谢您的帮助!

这是更新的查询

select u.Email, AffiliateID, count(u.AffiliateID) as afid
from users u
where SiteID=17
group by u.Email
order by afid desc 

这会生成上方的图像...

但这不是我所需要的。我需要的是509218用户首先显示,然后是他所推荐的用户数,然后是下一个用户5dd ..然后是第三名和第四名,分别是471和472。

1 个答案:

答案 0 :(得分:3)

您应该添加group by(以获取每个用户的结果)子句:

select u.AffiliateID, count(u.Email) as afid
from users u
group by u.AffiliateID
order by afid desc

如果您需要users表中的更多数据,则可以使用joinusers进行以下查询:

select u.ID, u.Email, t.afid
from users u
join (
  select AffiliateID, count(ID) as afid
  from users
  group by AffiliateID
) t on u.ID = t.AffiliateID
order by t.afid desc