+ 1
По выручке за неделю получить выручку за месяц
Используя SQL (любой диалект) получить выручку за месяц из выручки за неделю, учитывая, что сб и вс - выходные, а недели могут быть переходными из одного месяца в другой. Пример данных: Дата. Сумма 07.01.2019 567,00 14.01.2019 598,00 21.01.2019 768,00 28.01.2019 679,00 04.02.2019 570,00 11.02.2019 456,00
9 Respuestas
+ 1
Try this..
SELECT DATE_FORMAT(date, "%Y") Year,
DATE_FORMAT(date, "%W") Month,
SUM(amount) 'Weekly Amount'
FROM docs
GROUP BY WEEK(DATE, 3), YEAR(date);
0
Варианты на python тоже подойдут)))
0
Это не ежедневные данные, это первые дни недели и данные за неделю. За день все как раз очевидно, ваше решение работает за день нормально.
0
Извините, я не очень понимаю, что вы имеете в виду.
Если вам нужны еженедельные данные, вы можете изменить месяц month(дата) на еженедельный week(дата, 3).
(I'm sorry, I don't really understand what you mean.
If you need weekly data, you could change month(date) to week(date, 3).)
0
В наличии есть данные за неделю (в первой строчке примера за 5 дней начиная с 07.01.2019 было продано товаров на 567,00. Пять дней, т. к. Сб и вс - выходные дни)
0
Perhaps you show your expected output result in table. I try to understand what you want then.
0
Дата в тестовой таблице означает начало недели за которую была получена выручка.
(The date in the test table indicates the beginning of the week for which the revenue was received.)
0
select trunc(a.d_date, 'MM'), sum(a.d_sum)
from (select t.s_date + level - 1 d_date, (t.s_sum / 5) d_sum
from testtable t
connect by prior t.s_date = t.s_date
and prior dbms_random.value is not null
and level <= 5) a
where trunc(a.d_date, 'MM') =
nvl(trunc(to_date(:first_date_of_month, 'dd.mm.yyyy'), 'MM'),
trunc(a.d_date, 'MM'))
group by trunc(a.d_date, 'MM')
- 1
Чтобы рассчитать сумму за месяц на основе ежедневных данных:
(To calculate month amount from daily amount data:)
SELECT DATE_FORMAT(date, "%Y") Year,
DATE_FORMAT(date, "%M") Month,
SUM(amount) 'Monthly Amount'
FROM docs
GROUP BY MONTH(date), YEAR(date);
Tested on http://www.sqlfiddle.com/#!9/c62d5d/6