#sql-server
#sql-сервер
Вопрос:
Привет, мне нужно подсчитать, сколько результатов содержит столбцы 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
Итак, я хочу подсчитать, сколько a имеет b, например, у LOBO есть два результата, или у perro есть два результата после группировки.
Ответ №1:
Вы хотите посчитать distinct
значения a
, верно?
Тогда group by b
только:
select b,count(distinct a) counter from @t group by b
Смотрите демонстрацию.
Результаты:
b | counter
:---- | ------:
GATO | 1
LOBO | 2
PATO | 1
PERRO | 2
POLLO | 1
Если вы хотите также подсчитать дубликаты, то:
select b,count(a) counter from @t group by b