Как разбить недельные данные в MySQL на ежедневное число - PullRequest
0 голосов
/ 24 марта 2019

У меня в базе данных значения доступны в недельном разбивке.Например, два столбца: 2019-03-10, 7000

Первый - неделя, другой - число

, чего я хотел бы добиться, используя запрос SELECT, - эторазделите это число на 7 и отобразите как 7 дней на этой неделе, чтобы получить результат:

2019-03-10   -   1000
2019-03-11   -   1000
2019-03-12   -   1000
2019-03-13   -   1000
2019-03-14   -   1000
2019-03-15   -   1000
2019-03-16   -   1000

Я не смог построить ни одного запроса, даже не уверен, выполнимо ли это, но это будетблагодарен за любые предложения

1 Ответ

2 голосов
/ 24 марта 2019

Вы можете достичь этого результата, JOIN внеся свою таблицу еженедельных данных в сгенерированную таблицу, содержащую значения от 0 до 6 (для количества дней относительно начала недели).Вы можете создать дату каждого дня, добавив номер дня начала недели, а количество, разделив номер недели на 7. Например:

CREATE TABLE weekly (week_start DATE,
                     quantity INT);

INSERT INTO weekly VALUES
('2019-03-10', 7000),
('2019-03-03', 4444);

SELECT w.week_start + INTERVAL d.day DAY AS `date`,
       w.quantity / 7 AS quantity
FROM weekly w
CROSS JOIN (SELECT 0 AS day
            UNION SELECT 1 UNION SELECT 2 UNION SELECT 3
            UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) d
ORDER BY `date`

Вывод:

date        quantity
2019-03-03  634.8571
2019-03-04  634.8571
2019-03-05  634.8571
2019-03-06  634.8571
2019-03-07  634.8571
2019-03-08  634.8571
2019-03-09  634.8571
2019-03-10  1000
2019-03-11  1000
2019-03-12  1000
2019-03-13  1000
2019-03-14  1000
2019-03-15  1000
2019-03-16  1000

Демо на dbfiddle

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