【问题标题】:Calculate total affiliated count per user计算每个用户的总关联数
【发布时间】:2019-05-03 02:30:36
【问题描述】:

我一直在寻找一个简单的SQL查询来解决一个非常简单的问题。我一直在运行一个非常简单的社交分享活动,我们有一个包含 2 个字段的 mysql 数据库:电子邮件和 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 并打成平手。

【问题讨论】:

标签: mysql sql group-by


【解决方案1】:

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

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

如果您需要users 表中的更多数据,您可以使用usersjoin 以下查询结果:

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

【讨论】:

  • 谢谢 - 这让我离目标更近了,但它不是我想要的......我上传了图片来说明......每个用户都有一个 ID 和一个 AffiliateID 说我推荐你我的ID是5092...等如上图(就是我的ID)在你记录的AffiliateID栏里,我的ID就放好了。我想要的是一种反身陈述,它显示了顶级附属公司的排名。
  • 您的查询仅返回 1 值,因为它实际上并没有计算谁拥有最多的选票。我说得有道理吗?我希望输出是拥有最多 AffiliateID 记录的人的 ID。我说得有道理吗?它是一个排行榜。
  • @Viktor 你的意思是你需要最相关的人吗?然后查看更新的答案
  • 是的 - 我需要推荐最多的附属机构的人员列表。不只是 1,而是由推荐最多的人订购的列表。您更新后的查询仍然返回我在上面发布的相同图片。
  • @Viktor: 对不起,我不完全理解你,请发布一些示例数据和基于它的所需输出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-22
  • 1970-01-01
  • 2017-08-08
  • 2012-05-11
  • 2020-12-11
  • 1970-01-01
  • 2015-04-13
相关资源
最近更新 更多