У меня есть две таблицы с той же схемой, что и для ввода:
+---------+--------+----------------------+
| value | city | timestamp |
+---------+--------+----------------------+
| 50 | LA | 2019-02-6 03:05pm |
| 163 | NYC | 2019-02-5 03:06pm |
| 681 | SF | 2019-02-4 06:41pm |
| 35 | LA | 2019-02-3 05:12pm |
+---------+--------+----------------------+
Первая таблица содержит регулярные платежи, а вторая - платежи.Я хочу присоединиться к таблицам и сгруппировать их следующим образом:
+------------+--------+----------+--------------+
| regular | fees | city | timestamp |
+------------+--------+----------+--------------+
| 50 | 20 | LA | 2019-02-6 |
| 163 | NULL | NYC | 2019-02-5 |
| 681 | .. | SF | 2019-02-4 |
| 35 | .. | LA | 2019-02-3 |
+------------+--------+----------+--------------+
Могут быть дни, когда сборы не взимаются.Что я пробовал:
SELECT t1.city, regular, fees, t1.day
FROM
(
SELECT city, SUM(value) AS regular, FORMAT_TIMESTAMP("%Y-%m-%d", TIMESTAMP(timestamp)) as day
FROM `payments`
GROUP BY day, city
) t1
FULL JOIN (
SELECT city, SUM(value) AS fees, FORMAT_TIMESTAMP("%Y-%m-%d", TIMESTAMP(timestamp)) as day
FROM `fees`
GROUP BY day, city
) t2
ON t1.day = t2.day
ORDER BY t1.day DESC
Это дает правильную схему вывода, однако она не суммирует сборы правильно:
+------------+--------+----------+--------------+
| regular | fees | city | timestamp |
+------------+--------+----------+--------------+
| 26500 | 6300 | LA | 2019-02-6 |
| 26500 | 8500 | LA | 2019-02-6 |
| 26500 | 1000 | LA | 2019-02-6 |
+------------+--------+----------+--------------+
Как вы видите, я получаю за то же самоеДень и город разные значения платы.Есть идеи, что я здесь делаю не так?