Совокупный общий счет - PullRequest
0 голосов
/ 07 января 2020

Я хочу объединить два столбца (Отправитель и Получатель) и получить количество Типов транзакций.

Sender      Receiver  Type  Amount  Date
773787639   777611388   1   300    2/1/2019
773631898   776806843   4   450    8/20/2019
773761571   777019819   6   369    2/11/2019
774295511   777084440   34  1000   1/22/2019
774263079   776816905   45  678    6/27/2019
774386894   777202863   12  2678   2/10/2019
773671537   777545555   14  38934  9/29/2019
774288117   777035194   18  21     4/22/2019
774242382   777132939   21  1275    9/30/2019
774144715   777049859   30  6309    7/4/2019
773911674   776938987   10  3528    5/1/2019
773397863   777548054   15  35892   7/6/2019
776816905   772345091   6   1234    7/7/2019
777035194   775623065   4   453454  7/20/2019

Я пытаюсь получить такой стол

Sender/Receiver    Type_1    Type_4    Type_12...... Type_45
773787639            3          2         0            0
773631898            1          0         1            2
773397863            2          2         0            0 
772345091            1          1         0            3

1 Ответ

0 голосов
/ 07 января 2020

Вы ищете сводный запрос. Единственный поворот здесь заключается в том, что нам нужно сначала взять объединение таблицы, чтобы объединить данные отправителя и получателя в один столбец.

SELECT
    SenderReceiver,
    COUNT(CASE WHEN Type = 1 THEN 1 END) AS Type_1,
    COUNT(CASE WHEN Type = 2 THEN 1 END) AS Type_2,
    COUNT(CASE WHEN Type = 3 THEN 1 END) AS Type_3,
    ...
    COUNT(CASE WHEN Type = 45 THEN 1 END) AS Type_45
FROM
(
    SELECT Sender AS SenderReceiver, Type FROM yourTable
    UNION ALL
    SELECT Receiver, Type FROM yourTable
) t
GROUP BY
    SenderReceiver;

Если вы не хотите вводить 45 отдельных CASE выражения, вы могли бы, возможно, до некоторой степени автоматизировать его, используя Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...