В настоящее время у меня есть таблица mysql, которая выглядит следующим образом:
+---------------------+------+-------+-------+-------+
| datetime | name | flag1 | flag2 | flag3 |
+---------------------+------+-------+-------+-------+
| 2018-05-06 00:00:05 | john | 0 | 2 | 1 |
| 2018-05-06 00:00:10 | john | 1 | 0 | 1 |
| 2018-05-06 00:00:15 | john | 1 | 1 | 1 |
| 2018-05-06 00:00:05 | troy | 1 | 1 | 1 |
| 2018-05-06 00:00:10 | troy | 1 | 1 | 1 |
| 2018-05-06 00:00:15 | troy | 1 | 0 | 1 |
| 2018-05-05 00:00:05 | john | 1 | 0 | 0 |
| 2018-05-05 00:00:10 | john | 1 | 1 | 0 |
| 2018-05-05 00:00:15 | john | 0 | 1 | 0 |
| 2018-05-05 00:00:05 | troy | 2 | 1 | 1 |
| 2018-05-05 00:00:10 | troy | 3 | 1 | 0 |
| 2018-05-05 00:00:15 | troy | 3 | 1 | 3 |
| 2018-05-04 00:00:05 | john | 1 | 1 | 1 |
| 2018-05-04 00:00:10 | john | 1 | 1 | 1 |
| 2018-05-04 00:00:15 | john | 0 | 0 | 2 |
| 2018-05-04 00:00:05 | troy | 3 | 1 | 0 |
| 2018-05-04 00:00:10 | troy | 1 | 1 | 1 |
| 2018-05-04 00:00:15 | troy | 1 | 1 | 1 |
+---------------------+------+-------+-------+-------+
Я хочу объединить его в кумулятивное значение каждого из флагов для каждого отдельного имени в каждый уникальный день.
Я пытаюсь объединить это в это:
+------------+------+-------------+-------------+-------------+
| date | name | total_flag1 | total_flag2 | total_flag3 |
+------------+------+-------------+-------------+-------------+
| 2018-05-06 | john | 2 | 3 | 3 |
| 2018-05-06 | troy | 3 | 2 | 3 |
| 2018-05-05 | john | 2 | 2 | 0 |
| 2018-05-05 | troy | 8 | 3 | 4 |
| 2018-05-04 | john | 2 | 2 | 4 |
| 2018-05-04 | troy | 5 | 3 | 2 |
+------------+------+-------------+-------------+-------------+
Фактическая таблица, с которой я имею дело, содержит 300+ уникальных имен, с 288 (5-минутными интервалами в течение дня) строк для каждого, содержащего значения флага для каждого времени.
Я знаю, что могу сделать это для каждой отдельной даты / имени, выполнив что-то вроде следующего:
@flag1Cuml := 0;
@flag2Cuml := 0;
@flag2Cuml := 0;
SELECT
DATE(datetime) as date,
name,
(@flag1Cuml := @flag1Cuml + flag1) as total_flag1,
(@flag2Cuml := @flag2Cuml + flag2) as total_flag2,
(@flag2Cuml := @flag2Cuml + flag3) as total_flag3
WHERE
name = 'John'
AND DATE(datetime) = '2018-05-06'
Очевидно, что это не оптимально, так как мой стол такой большой. Я уверен, что это можно сделать одним вложенным запросом, но я новичок в mysql и не уверен, как получить то, что мне нужно.
В идеале я хотел бы использовать этот запрос для создания нового представления, если это возможно.