|
Помогите с запросом pro-rata, что не так?
|
|||
---|---|---|---|
#18+
В приложении сама база (как пример) Периоды времени, продолжительность , и стоимость аренды за период. Для примера составлены всего 3 периода, в реальной таблице таких периодов за год будет много. (для наглядности рубль в день ,и два рубля в день) Смысл запроса, вычисление аренды pro-rata между произвольно заданными датами 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 +++ Вот, собственно, сам запрос: WITH RECURSIVE dates(date) AS ( VALUES({edbegdate}) UNION ALL SELECT date(date, '+1 day') FROM dates WHERE date < {edenddate} ) SELECT "date", TOTAL( ( SELECT TOTAL(rent.rent / (julianday(rent."end") - julianday(rent."begin"))) FROM rent WHERE date("date", '+1 day') >= rent."begin" AND "date" < rent."end" END) ) ) as TotalResult FROM dates +++++++++++++++++++ Делаю тестовые запросы 1.01 - 10.01 - возвращает период 10 дней, аренду 10 , правильно 1.01 - 31.01 - возвращает период 31 день, но аренду 30, вместо 31 1.02 - 15.02 - возвращает период 15 дней , а аренду 28, вместо 30 1.01 - 25.02 - возвращает период 56 дней, а аренду 66,99 вместо 71 Пробовал разные комбинации, никак не могу понять , где ошибка Или может pro-rata как-то по-другому нужно запрашивать? Как в бухгалтерских программах делают, когда месяцы закрывают (там тоже пропорцию к концу месяца считают)? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 23:36 |
|
Помогите с запросом pro-rata, что не так?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 23:38 |
|
Помогите с запросом pro-rata, что не так?
|
|||
---|---|---|---|
#18+
эээээ..... чего? Как могут быть "произвольно заданные даты" если у тебя в базе уже четко заданные периоды? Обещал три периода, а в базе в реальности всего два. Так в чем у тебя проблема то? В ренте или в периоде? "1.01 - 25.02" это что за период такой? От первого января, до второго числа двадцать пятого месяца? А это в каком календаре? Читай тут: 13467826 . Обрати внимание на пункты 2, 3, 4 и особенно 5. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 00:37 |
|
Помогите с запросом pro-rata, что не так?
|
|||
---|---|---|---|
#18+
White Owlэээээ..... чего? Как могут быть "произвольно заданные даты" если у тебя в базе уже четко заданные периоды? В том-то и дело, что необходимо получить pro-rata значение. White Owl"1.01 - 25.02" это что за период такой? От первого января, до второго числа двадцать пятого месяца? А это в каком календаре? Это 01 Янв 2016 - 25 Фев 2016 Есть , чем помочь, помоги ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 12:57 |
|
Помогите с запросом pro-rata, что не так?
|
|||
---|---|---|---|
#18+
Доброму мсью пихать свой рекурсивный запрос во все дыры - ну фу же. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
*) Мнение автора может не совпадать с мнением булгахтера, аудтора, следователя и арестантов, "pro rata" ассоциируется у него с крысой. *) Как обрабатывать пропуски в таблице? Например, первый интервал до 31 марта, а второй - с 3 апреля. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2016, 16:59 |
|
|
start [/forum/topic.php?fid=54&msg=39184783&tid=2008616]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 152ms |
0 / 0 |