подсчитать дату каждого пользователя mysql - PullRequest
0 голосов
/ 22 февраля 2020

у меня есть 1 покупатель данных таблицы с именем order_match , который содержит столбец созданный в качестве покупателя, createAt в качестве даты транзакции и order_status_Id как order_status, если order_status_id (4,5,6,8), то транзакции одобрены, поэтому я хочу подсчитывать каждые различные дни каждого покупателя, чтобы я знал разрыв каждого покупателя в выполнении новой транзакции после последней транзакции Таким образом, после этого я могу посчитать max день наибольшего разрыва транзакции и минимум день и Среднее покупателя в этом диапазоне для выполнения транзакция

this is the example data of the transaction between 2018-12-01 until 2018-12-04

    +-----------+------------+-----------------+
    | createdby | createdAt  | order_status_id |
    +-----------+------------+-----------------+
    |         A | 2018-12-01 |               4 |
    |         A | 2018-12-02 |               5 |
    |         A | 2018-12-04 |               5 |
    |         B | 2018-12-02 |               5 |
    |         B | 2018-12-04 |               5 |
    |         C | 2018-12-03 |               5 |
    |         C | 2018-12-04 |               6 |
    +-----------+------------+-----------------+

из этих данных, ожидаемые результаты:

+-------------------------------+---------+---------------------------------------+
|            max day            | min day |    average day of the transaction     |
+-------------------------------+---------+---------------------------------------+
| 2 (the transaction on         |       1 | 1,5 (average from each gap            |
| buyer "A" ('2018-12-02' to    |         | day / of the gap transaction held) |
| '2018-12-04) and "B"          |         |                                       |
| ('2018-12-02' to '2018-12-04) |         |                                       |
+-------------------------------+---------+---------------------------------------+

Дело в том, что я хочу посчитать временной разрыв в днях между каждыми двумя последовательными покупками, совершенными покупателем в течение выбранный период времени. разница в днях также вычисляет временную задержку между последней покупкой перед выбранным временным диапазоном (если есть) и первой покупкой в ​​выбранном временном диапазоне.

это мой синтаксис прогресса

SELECT sum((DATEDIFF(greatest(om1.createdAt, '2018-12-18'), least(om2.createdAt, '2018-12-20'))*-1)+1)
FROM order_match om1, order_match om2 
WHERE om1.createdAt <='2018-12-20' AND om2.createdAt >= '2018-12-18' and
om1.order_status_Id in (4, 5, 6, 8) group by om1.createdby;
...