У меня есть таблица с именем «counter», которая имеет 3 поля:
| Field | Type | Null | Key | Default | Extra |
+--------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| record | datetime | YES | | NULL | |
| passed | tinyint(1) | YES | | NULL | |
+--------+------------+------+-----+---------+----------------+
Данные, которые я сохраняю в записи, выглядят так (передано как логическое значение):
mysql> SELECT record, passed FROM counter;
+---------------------+--------+
| record | passed |
+---------------------+--------+
| 2019-09-19 00:00:00 | 1 |
ЧтоЯ хочу сделать это запрос, который суммирует, сколько раз переданное поле было 1 сгруппированы по часу и дате.например:
Hour | Date | passed
13:00 2019-09-19 10
Выполнение:
SELECT HOUR (record), COUNT(*) as passed FROM counter GROUP BY HOUR(record);
Я получаю эти результаты
| HOUR (record) | passed |
+---------------+--------+
| 0 | 67 |
| 13 | 199 |
+---------------+--------+
Проблема в том, что после 13:00 есть записи, а не высев навсе.
Также для того, чтобы получить также дату, которую я пытался:
SELECT DAY(record), COUNT(*), HOUR(record), COUNT(*) as passed FROM counter GROUP BY HOUR(record);
И я получаю эту ошибку
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'iot.counter.record' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Как мне заархивировать требуемый результат