powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сумма числового столбца за период
9 сообщений из 9, страница 1 из 1
Сумма числового столбца за период
    #39176763
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го? (часть рублей первого периода, второй, и часть третьего)
...
Рейтинг: 0 / 0
Сумма числового столбца за период
    #39176829
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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-ом классе проходили...
составьте алгоритм на бумаге... а потом будет легко...
...
Рейтинг: 0 / 0
Сумма числового столбца за период
    #39176844
kostas2016
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я методом пропорции в excell считаю.

Люди добрые подсказали, что можно вот так:

SUM () / datediff () ......это работает, но только , если все значения в столбце одинаковые

Перенести алгоритм пропорции в SQL запрос для меня сложно, т.к не программист.
Поэтому и пришел за помощью.
...
Рейтинг: 0 / 0
Сумма числового столбца за период
    #39176867
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kostas2016Я методом пропорции в excell считаю.

Люди добрые подсказали, что можно вот так:

SUM () / datediff () ......это работает, но только , если все значения в столбце одинаковые

Перенести алгоритм пропорции в SQL запрос для меня сложно, т.к не программист.
Поэтому и пришел за помощью.


ок, напишите словами алгоритм решения конкретно с вашими
3 записями (из начального поста).
Не стесняйтесь использовать слова на русском: "если" "то" "иначе"
...логика в СКЛ будет идентичная Екселу...
просто надо четко выявить какие даты от каких отнимать
что на что делить в разных ситуациаях...
...
Рейтинг: 0 / 0
Сумма числового столбца за период
    #39176904
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
...
Рейтинг: 0 / 0
Сумма числового столбца за период
    #39176978
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Сумма числового столбца за период
    #39177477
kostas2016
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Увыажаемые Гуру, не могли бы вы в словах обьяснить, какие действия происходят в этой части запроса

SELECT SUM(rent.rent / (datediff(rent.`end`, rent.`begin`)+1))

Сумма столбца rent в пределах периода? Каким образом эти rent в столбце считаются? Идет подсчет pro-rata или нет?
...
Рейтинг: 0 / 0
Сумма числового столбца за период
    #39177485
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
считает СУММА(rent за 1 день периода)
...
Рейтинг: 0 / 0
Сумма числового столбца за период
    #39177609
kostas2016
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сумма числового столбца за период
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]