计算记录问题

neo*_*key 2 sql t-sql sql-server

这可能是一个简单的,但我无法理解它.

我有一个MemberBusinessCats表,其中包含一个BusinessCatID和一个MemberID ..表可以这样呈现:

+-----------------------+-----------------+------------+
|  MemberBusinessCatID  |  BusinessCatID  |  MemberID  |
+-----------------------+-----------------+------------+
|  27                   |  45             |  102       |
+-----------------------+-----------------+------------+
|  28                   |  55             |  102       |
+-----------------------+-----------------+------------+
|  29                   |  61             |  102       |
+-----------------------+-----------------+------------+
|  30                   |  45             |  33        |
+-----------------------+-----------------+------------+
|  31                   |  23             |  33        |
+-----------------------+-----------------+------------+
|  32                   |  45             |  73        |
+-----------------------+-----------------+------------+
|  32                   |  61             |  73        |
+-----------------------+-----------------+------------+
|  32                   |  45             |  73        |
+-----------------------+-----------------+------------+
Run Code Online (Sandbox Code Playgroud)

如何制作脚本以显示以下数据

+-----------------+---------------------+
|  BusinessCatID  |  NumMembers In Cat  |
+-----------------+---------------------+
|  45             |  3                  |
+-----------------+---------------------+
|  55             |  1                  |
+-----------------+---------------------+
|  61             |  2                  |
+-----------------+---------------------+
|  23             |  1                  |
+-----------------+---------------------+
Run Code Online (Sandbox Code Playgroud)

提前谢谢了.

neojakey

Tar*_*ryn 5

您需要使用聚合函数GROUP BY:

select BusinessCatID, count(*) NumMembersInCat
from MemberBusinessCats
group by BusinessCatID
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo

这也可以使用count() over()以下方法编写:

select distinct BusinessCatID, 
  count(*) over(partition by BusinessCatID) NumMembersInCat
from MemberBusinessCats
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo

如果您想计算每个类别中的成员数量,那么您可以使用:

select BusinessCatID, 
  count(distinct MemberID) NumMembersInCat
from MemberBusinessCats
group by BusinessCatID
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo