У меня есть представление, созданное для генерации отчета о проверке критически важного крона, который запускается еженедельно. Представление показывает еженедельные пробеги,
Сумма всех зачисленных счетов,
(некоторый кредит идет на ТАК приятелей за мои результаты!), сумма ОТКРЫТЫХ счетов, сумма закрытых счетов, основные вещи.
mysql> select * from view_command_OPEN_CLOSED_tally limit 5;
+---------------------+-------------------------+-----------------------+---------------------+-------------------+----------------------+--------------------+
| created | total_accounts_credited | total_amount_credited | total_open_credited | total_amount_open | total_closed_credited| total_amount_closed|
+---------------------+-------------------------+-----------------------+---------------------+-------------------+----------------------+--------------------+
| 2019-01-19 00:00:00 | 18175 | 3173.68 | 16953 | 7063.68 | 1222 | 110.00 |
| 2019-01-12 00:00:00 | 18135 | 4768.43 | 17053 | 9358.43 | 1082 | 410.00 |
| 2019-01-10 09:00:27 | 80 | 1497.75 | 80 | 1497.75 | 0 | 0.00 |
| 2019-01-09 09:20:55 | 51 | 933.50 | 50 | 915.75 | 1 | 17.75 |
| 2019-01-08 16:45:14 | 10 | 187.50 | 10 | 187.50 | 0 | 0.00 |
+---------------------+-------------------------+-----------------------+---------------------+-------------------+----------------------+--------------------+
Я предположил, что мог бы легко сгенерировать второе представление из этого с подзапросом, который бы показывал разницу в процентах от предыдущей недели. IE:
Создан, total_accounts_credited, diff_from_last_week_in_percent, total_ammount_credited, diff_in_percent_from_last_week и т. Д ...
Я не могу получить результаты своей предыдущей недели, чтобы соответствовать данным и рассчитать процент. Результирующий набор отображает некоторую строку предыдущего
Все запросы, которые я пробовал, вращались вокруг базового левого соединения, но по какой-то причине результат «предыдущая неделя» не отображается в соответствующем месте.
Я, очевидно, делаю что-то направленное на MySQL в моем подходе, и в ответ это выдает мне непоследовательный набор результатов.
mysql> SELECT vtally.created,
-> vtally.total_accounts_credited,
-> vtally2.total_accounts_credited `previous`,
-> vtally.total_open_credited ,
-> vtally2.total_open_credited `previous`,
-> vtally.total_closed_credited,
-> vtally2.total_closed_credited`previous`
-> FROM view_command_OPEN_CLOSED_tally vtally
-> LEFT JOIN view_command_OPEN_CLOSED_tally vtally2
-> ON vtally.created = vtally2.created - INTERVAL 7 DAY
-> GROUP BY
-> DATE(vtally.created)
-> ORDER BY vtally.created DESC LIMIT 2;
+---------------------+-------------------------+----------+---------------------+----------+----------------------+----------+
| created | total_accounts_credited | previous | total_open_credited | previous | total_closed_credited | previous |
+---------------------+-------------------------+----------+---------------------+----------+----------------------+----------+
| 2019-01-19 00:00:00 | 8175 | NULL | 6953 | NULL | 222 | NULL |
| 2019-01-12 00:00:00 | 8135 | 8175 | 7053 | 6953 | 082 | 1222 |
+---------------------+-------------------------+----------+---------------------+----------+----------------------+----------+
Приведенный выше набор результатов является примером,
Я ожидал, что результат будет следующим: каждый предыдущий столбец будет содержать результат предыдущей недели столбца слева:
(только верхний ряд, без учета нижнего ряда)
+---------------------+-------------------------+----------+---------------------+----------+----------------------+----------+
| created | total_accounts_credited | previous | total_open_credited | previous | total_closed_credited | previous |
+---------------------+-------------------------+----------+---------------------+----------+----------------------+----------+
| 2019-01-19 00:00:00 | 8175 | 8135 | 6953 | 7053 | 222 | 082 |
| 2019-01-12 00:00:00 | 8135 | 8175 | 7053 | 6953 | 082 | 1222 |
+---------------------+-------------------------+----------+---------------------+----------+----------------------+----------+
Чего мне не хватает, чтобы иметь правильную «предыдущую» сумму в соответствующем столбце?
Я полагаю, что это может быть Group BY, но понятия не имею, куда идти, похоже, перепробовал все варианты.