Как получить максимальное количество транзакций по паре в sql - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть таблица, приведенная ниже:

    Tid.    Source.           Destination
    10.        A.                    B
    11.        A.                    C
    12.        A.                    D
    13.        B.                    C
    14.        C.                    B
    15.        D.                    A
    16.        C.                    A
    17.        C.                    A

Теперь сценарий заключается в том, что мы должны посчитать транзакцию с учетом от A до C и от C до A или (от C до B и от B до C) зата же комбинация.Это означает, что количество транзакций будет 3.

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Используйте оператор case для построения пар, по которым нужно сгруппировать:

select
  case when source <= destination then source else destination end mincol,
  case when source >= destination then source else destination end maxcol,
  count(*) counter
from tablename
group by 
  case when source <= destination then source else destination end, 
  case when source >= destination then source else destination end 

См. demo .Результаты:

mincol | maxcol | counter
:----- | :----- | ------:
A      | B      |       1
A      | C      |       3
B      | C      |       2
A      | D      |       2
0 голосов
/ 20 сентября 2019

Вопрос немного расплывчат, особенно в отношении "той же группы".

select count(*)
from YourTable
where (Source = 'A.' and Destination = 'C')
      or (Source = 'C.' and Destination = 'A')

В общем случае:

declare @YourTable table (Tid int, Source varchar(1), Destination varchar(1))

insert into @YourTable
values (10,'A','B')
      ,(11,'A','C')
      ,(12,'A','D')
      ,(13,'B','C')
      ,(14,'C','B')
      ,(15,'D','A')
      ,(16,'C','A')
      ,(17,'C','A')

select 'Combination ' + case when Source < Destination then Source + ', ' + Destination else Destination + ', ' + Source end Combination, count(*) Count
from @YourTable
group by case when Source < Destination then Source + ', ' + Destination else Destination + ', ' + Source end

Вывод

Combination         Count
Combination A, B    1
Combination A, C    3
Combination A, D    2
Combination B, C    2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...