|
|
|
Сумма числового столбца за период
|
|||
|---|---|---|---|
|
#18+
Допустим, за период с 17:00 1го по 14:00 10е получили 1000 рублей, за период с 14:00 10 по 13:45 20е 1500 рублей, с 13:45 20 - 14:00 31 4000 рублей Как правильно составить запрос, чтобы получить , например, значение за период с 00:00 5го по 23:00 23го? (часть рублей первого периода, второй, и часть третьего) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2016, 15:44 |
|
||
|
Сумма числового столбца за период
|
|||
|---|---|---|---|
|
#18+
kostas2016Допустим, за период с 17:00 1го по 14:00 10е получили 1000 рублей, за период с 14:00 10 по 13:45 20е 1500 рублей, с 13:45 20 - 14:00 31 4000 рублей Как правильно составить запрос, чтобы получить , например, значение за период с 00:00 5го по 23:00 23го? (часть рублей первого периода, второй, и часть третьего) ...пропорции...кажется в 4-ом классе проходили... составьте алгоритм на бумаге... а потом будет легко... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2016, 18:06 |
|
||
|
Сумма числового столбца за период
|
|||
|---|---|---|---|
|
#18+
Я методом пропорции в excell считаю. Люди добрые подсказали, что можно вот так: SUM () / datediff () ......это работает, но только , если все значения в столбце одинаковые Перенести алгоритм пропорции в SQL запрос для меня сложно, т.к не программист. Поэтому и пришел за помощью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2016, 18:52 |
|
||
|
Сумма числового столбца за период
|
|||
|---|---|---|---|
|
#18+
kostas2016Я методом пропорции в excell считаю. Люди добрые подсказали, что можно вот так: SUM () / datediff () ......это работает, но только , если все значения в столбце одинаковые Перенести алгоритм пропорции в SQL запрос для меня сложно, т.к не программист. Поэтому и пришел за помощью. ок, напишите словами алгоритм решения конкретно с вашими 3 записями (из начального поста). Не стесняйтесь использовать слова на русском: "если" "то" "иначе" ...логика в СКЛ будет идентичная Екселу... просто надо четко выявить какие даты от каких отнимать что на что делить в разных ситуациаях... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2016, 19:37 |
|
||
|
Сумма числового столбца за период
|
|||
|---|---|---|---|
|
#18+
Вычисляю так from to revenue period1 13:45 25/01/2015 - 15:00 08/02/2015 1000 period2 15:00 08/02/2015 - 12:30 24/02/2015 3000 period3 12:30 24/02/2015 - 06:40 03/03/2015 2000 рассчитываю , сколько заработали с 00:00 01/02/15 по 00:00 01/03/15 таким образом 1- методом пропорции вычисляю долю заработка из первого периода приходящююся на отрезок февраля с 00:00 01/02/15 по 15:00 08/02/2015 2- методом пропорции вычисляю долю заработка из третьего периода приходящююся на отрезок с 12:30 24/02/2015 по 00:00 01/03/2015 3- суммирую получивщиеся 1 и 2 с целым периодом 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2016, 21:19 |
|
||
|
Сумма числового столбца за период
|
|||
|---|---|---|---|
|
#18+
kostas2016Вычисляю так from to revenue period1 13:45 25/01/2015 - 15:00 08/02/2015 1000 period2 15:00 08/02/2015 - 12:30 24/02/2015 3000 period3 12:30 24/02/2015 - 06:40 03/03/2015 2000 рассчитываю , сколько заработали с 00:00 01/02/15 по 00:00 01/03/15 таким образом 1- методом пропорции вычисляю долю заработка из первого периода приходящююся на отрезок февраля с 00:00 01/02/15 по 15:00 08/02/2015 2- методом пропорции вычисляю долю заработка из третьего периода приходящююся на отрезок с 12:30 24/02/2015 по 00:00 01/03/2015 3- суммирую получивщиеся 1 и 2 с целым периодом 3 ок, теперь еше один шаг внутрь, записшем условия 3 случаев допусть П1 начало репортного периода, П2 - конец репортного периода Т1 Начало записи, Т2 -- конец записи. Р -- полученые рубли от Т1 до Т2 итак если Т1 < П1 и Т2 < П1 -- вся запись раньше репорта, нам она нафик не сдалась если Т1 < П1 и Т2 > П1 тогда зачтём Р * (Т2 - П1) / (Т2 - Т1) ну и так далее все 3 рабочих варианта. В чистом СКл-е ето будет выглядеть коряво но функционально сойдет: select SUM ( case when Т1 < П1 и Т2 > П1 then Р * (Т2 - П1) / (Т2 - Т1) when ... then ... when ... then ... else 0 end ) summa фром Тablica ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2016, 02:08 |
|
||
|
Сумма числового столбца за период
|
|||
|---|---|---|---|
|
#18+
Увыажаемые Гуру, не могли бы вы в словах обьяснить, какие действия происходят в этой части запроса SELECT SUM(rent.rent / (datediff(rent.`end`, rent.`begin`)+1)) Сумма столбца rent в пределах периода? Каким образом эти rent в столбце считаются? Идет подсчет pro-rata или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2016, 10:28 |
|
||
|
Сумма числового столбца за период
|
|||
|---|---|---|---|
|
#18+
считает СУММА(rent за 1 день периода) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2016, 10:37 |
|
||
|
Сумма числового столбца за период
|
|||
|---|---|---|---|
|
#18+
Alex Ustinov, Спасибо за ответ. Все равно не понимаю, как считает. Помогите разобраться пожалуйста Вот привожу простой пример Таблица1 start end duration rent 1/01/2016 00:00 31/01/2016 23:59 31 31 1/02/2016 00:00 15/02/2016 23:59 15 30 16/02/2016 00:00 25/02/2016 23:59 10 10 Таблица2 сгенерированные даты Сам запрос select (SELECT date_format({begPeriod},'%d-%m-%Y') as "Starting date", date_format({endPeriod},'%d-%m-%Y') as "Finishing date", DATEDIFF({endPeriod},{begPeriod})+1 AS "Duration days", round( SUM( ( SELECT SUM(rent.rent / (datediff(economy.`end`, economy.`begin`)+1)) FROM economy WHERE `selected_date` >= economy.`begin` AND `selected_date` <= economy.`end`END) ) ),2 ) as "rent" Вот собственно результаты запросов: искомый период duration rent должно быть 01-02-2016 02-02-2016 2 2 4 01-02-2016 03-02-2016 3 4 6 01-02-2016 06-02-2016 6 10 12 01-02-2016 15-02-2016 15 28 30 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2016, 13:08 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=110&tid=1832119]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
81ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 398ms |

| 0 / 0 |
