Как рассчитать количество дней в MySql или R? - PullRequest
0 голосов
/ 22 сентября 2019

Я использую две таблицы, например:

T1

ID       Name       Insertion_Date

TT-1     ABC        2019-09-22 14:22:18
TT-2     XYZ        2019-08-28 15:12:11

T2

id       Date            value            type   id_2
TT-1     2019-09-03      10,100           A      1001
TT-1     2019-07-12      10,100           A      1002
TT-1     2018-04-18      50,000           A      1003
TT-1     2019-04-03      55,000           B      1004
TT-2     2019-09-01      11,500           A      1005
TT-2     2019-05-22      12,100           B      1006
TT-2     2018-08-30      12,000           B      1007
TT-2     2017-06-12      15,000           C      1008

Я пытаюсь объединить обе таблицы и получитьнижеупомянутый вывод, используя MySQL.

Где, переменная 6month содержит количество записей: ID TT-1 от Insertion_Date до 180 дней или шесть месяцев, то же самое относится и к 12month и >12month.

В столбце Total содержится общее число ID в T2.

Вывод:

ID       Name        6month     12month      >12month   Total
TT-1     ABC           3           0             1        4
TT-2     XYZ           2           0             2        4

Пример кадра данных:

id       Date            value            type   id_2    Insertion_Date
TT-1     2019-09-03      10,100           A      1001    2019-09-22 14:22:18
TT-1     2019-07-12      10,100           A      1002    2019-09-22 14:22:18
TT-1     2018-04-18      50,000           A      1003    2019-09-22 14:22:18
TT-1     2019-04-03      55,000           B      1004    2019-09-22 14:22:18
TT-2     2019-09-01      11,500           A      1005    2019-08-28 15:12:11
TT-2     2019-05-22      12,100           B      1006    2019-08-28 15:12:11
TT-2     2018-08-30      12,000           B      1007    2019-08-28 15:12:11
TT-2     2017-06-12      15,000           C      1008    2019-08-28 15:12:11

1 Ответ

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

Вы также можете выполнить агрегирование на основе некоторых условий в операторе выбора.

SELECT 
    t1.ID, 
    t1.Name, 
    SUM(IF(t2.Date > CURRENT_DATE - INTERVAL 6 MONTH AND t2.Date <= CURRENT_DATE, 1 , 0)) AS '6Month',
    SUM(IF(t2.Date > CURRENT_DATE - INTERVAL 12 MONTH AND t2.Date <= CURRENT_DATE - INTERVAL 6 MONTH, 1 , 0)) AS '12Month',
    SUM(IF(t2.Date <= CURRENT_DATE - INTERVAL 12 MONTH , 1 , 0)) AS '>12month',
    COUNT(0) AS Total
FROM t1
INNER JOIN t2 ON t2.id = t1.ID
GROUP BY t1.id, t1.Name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...