计算分组结果

时间:2019-04-03 17:07:05

标签: sql-server

嗨,我必须计算出b列有多少个结果,例如:

我创建了此查询来解释我的问题:

  Declare @t as Table(a varchar(50), b varchar(50))
  Insert into @t (a,b) values ('UNO', 'LOBO');
  Insert into @t (a,b) values ('DOS', 'LOBO');
  Insert into @t (a,b) values ('UNO', 'PERRO');
  Insert into @t (a,b) values ('DOS', 'PERRO');
  Insert into @t (a,b) values ('UNO', 'GATO');
  Insert into @t (a,b) values ('UNO', 'POLLO');
  Insert into @t (a,b) values ('UNO', 'PATO');
  Insert into @t (a,b) values ('UNO', 'PATO');
  Insert into @t (a,b) values ('UNO', 'PATO');
  Insert into @t (a,b) values ('UNO', 'PATO');

    select b,a from @t  group by b,a

   The grouped que results:
   b            a
   ------------ -----------------
   GATO         UNO
   LOBO         DOS
   LOBO         UNO
   PATO         UNO
   PERRO        DOS
   PERRO        UNO
   POLLO        UNO

所以,我想计算b中有多少个a,例如LOBO有两个结果,或者perro被分组后有两个结果。

1 个答案:

答案 0 :(得分:0)

您要计算distinct的{​​{1}}值,对吗?
然后仅a

group by b

请参见demo
结果:

select b,count(distinct a) counter from @t  group by b


如果您还想计算重复项,则:

b     | counter
:---- | ------:
GATO  |       1
LOBO  |       2
PATO  |       1
PERRO |       2
POLLO |       1