Как сгруппировать по дате и рассчитать средние значения одновременно - PullRequest
0 голосов
/ 13 июня 2019

Я новичок в этом, так что здесь: я пытаюсь преобразовать из unixtime в формат даты, а затем сгруппировать по дате, вычисляя среднее значение для другого столбца.Это в MariaDB.

CREATE OR REPLACE
VIEW `history_uint_view` AS select
    `history_uint`.`itemid` AS `itemid`,
    date(from_unixtime(`history_uint`.`clock`)) AS `mydate`,
    AVG(`history_uint`.`value`) AS `value`
from
    `history_uint`
where
((month(from_unixtime(`history_uint`.`clock`)) = month((now() - interval 1 month))) and ((`history_uint`.`value` in (1,
    0))
    and (`history_uint`.`itemid` in (54799, 54810, 54821, 54832, 54843, 54854, 54865, 54876, 54887, 54898, 54909, 54920, 58165, 58226, 59337, 59500, 59503, 59506, 60621, 60624, 60627, 60630, 60633, 60636, 60639, 60642, 60645, 60648, 60651, 60654, 60657, 60660, 60663, 60666, 60669, 60672, 60675, 60678, 60681, 60684, 60687, 60690, 60693, 60696, 60699, 64610)))

    GROUP by 'itemid', 'mydate', 'value'

1 Ответ

0 голосов
/ 14 июня 2019

Когда вы выбираете агрегатные функции (например, AVG) со столбцами без агрегатных функций, вы должны перечислить все столбцы, кроме столбцов с агрегатной функцией в GROUP BY -clause.

Таким образом, ваша группа должна выглядеть так:

GROUP by itemid, mydate

Если вы используете одинарные кавычки (например, 'itemid'), MariaDB обрабатывает их как строки, а не столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...