Sql 如何列出在COUNT语句中组合的项目

Sql 如何列出在COUNT语句中组合的项目,sql,Sql,我有一个DB,它有两个表: 表1列出了用户 表2列出了这些用户的代表 如果可能,我想在一个查询中执行以下操作: 列出从用户表中提取的委托人用户ID 计算委托人拥有的委托人数 列出代表的ID 我已经完成了步骤1和2,但不知道如何实现步骤3,如果可能的话。以下是我目前的疑问: Select distinct users.UserID, Count(delegates) as 'Number of Delegates' From delegates inner Join users on de

我有一个DB,它有两个表: 表1列出了用户 表2列出了这些用户的代表

如果可能,我想在一个查询中执行以下操作:

列出从用户表中提取的委托人用户ID 计算委托人拥有的委托人数 列出代表的ID 我已经完成了步骤1和2,但不知道如何实现步骤3,如果可能的话。以下是我目前的疑问:

Select distinct users.UserID, Count(delegates) as 'Number of Delegates'
  From delegates
  inner Join users on delegates.delegates = users.handle
  Group by Users.UserID
  Order by Count(delegates) desc

由于已按用户ID分组,所以不能在Select子句中使用委托ID。 您可以选择按userID和DelegateID进行分组,但缺点是相同的计数会重复多次


以下是SQL Server解决方案:

Select * From
(
Select users.UserID, users.handle, Count(delegates) as 'Number of Delegates'
  From delegates
  inner Join users on delegates.delegates = users.handle
  Group by Users.UserID, users.handle

) myTbl
Inner Join delegates d
on delegates.delegates = myTble.handle 

Order by 'Number of Delegates' desc

你有什么错误吗?您得到什么输出?它是什么类型的DB?Oracle/SQL Server/MySQL?为什么要在1个查询中包含所有内容?-1用于询问依赖于数据库系统的问题,而不命名数据库系统和版本。这是一个麻烦。除非您使用subselect,否则计数将不正确。结果集中的每一行很可能为1。修改group by子句后,计数将不符合预期。谢谢你指出。我忘了mysql有这个功能。mssql让团队中的concat如此痛苦!
Select * From
(
Select users.UserID, users.handle, Count(delegates) as 'Number of Delegates'
  From delegates
  inner Join users on delegates.delegates = users.handle
  Group by Users.UserID, users.handle

) myTbl
Inner Join delegates d
on delegates.delegates = myTble.handle 

Order by 'Number of Delegates' desc