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

Допустим, у меня есть такая таблица:

ID    Type    Itemcount    DateTime 
1       2          4        2018-05-05
2       1          10       2019-09-09
3       2          4        2018-05-05
4       1          10       2019-09-09

Как получить среднее количество элементов типа 1, существующее к дате и времени (сгруппированные по неделям), и я должен перейти на один год назад?.Какое максимальное количество предметов?

Мое решение:

set @totalitemssAllTypes =  (SELECT count(Itemcount)
        FROM db_dev.products
        where Datetime >= '2018-06-12 00:10:00.000000');

    SELECT CONCAT(YEAR(Datetime ), '/',MONTH(Datetime ), '/', WEEK(Datetime )), (count(LotCount)/@totalitemssAllTypes )
            FROM db_dev.products
            where Datetime >= '2018-06-12 00:10:00.000000' and 
                         Type    = 1
            GROUP BY WEEK(Datetime);

Пожалуйста, помогите спасибо

1 Ответ

1 голос
/ 13 июня 2019

Один из вариантов будет использовать функцию WEEK() для агрегирования:

SELECT
    WEEK(DateTime) AS week,
    AVG(Itemcount) AS item_avg
FROM db_dev.products
WHERE
    Type = 1 AND
    DateTime >= DATE_SUB(NOW(), INTERVAL 1 YEAR)
GROUP BY
    WEEK(DateTime);

Следует отметить, что WEEK() не может нумеровать недели, начиная с 1, начиная с самой ранней недели.

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