|
|
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
Добрый день. Не могу сообразить, как подсчитать количество суток, в которых квартира была занята посетителями. Для примера, есть таблица: Код: plaintext 1. 2. В ней квартира с ID=1 за период с 7 по 11 сентября была занята 2 раза. А если смотреть по суткам - то 7, 8, 9, 10 и 11 числа, т.е.5 раз. При этом 10-го числа была занята 2 раза. Каким запросом можно выдернуть результат "5 суток"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 00:30:31 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
andrew_jr20, как-то наскоком я не вижу решения. Если по не гунаптся перебором, то надо создать сквозную таблицу дат и потом проверить занятость каждого дня. Не очень чтоб естетично, но работать будет как швейная машинка Зингер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 02:21:46 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
javajdbc, Почему бы тупо не просуммировать с контролем занятости первой даты диапазона в качестве последней даты другого диапазона? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 02:27:37 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
miksoft, ну смотря какие правила -- может быть день приезда и день отезда надо считать как один день и резервации НИКОГДА физически не пересекаются -- тогда вообше можно сумировать с убиранием одного дня от каждого заказов. А если заказы таки могут пересекатся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 02:33:17 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
javajdbcА если заказы таки могут пересекатся?Судя про фразе "была занята", это не резервации, а лог фактической занятости и диапазоны не должны пересекаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 03:15:35 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
miksoftjavajdbcА если заказы таки могут пересекатся?Судя про фразе "была занята", это не резервации, а лог фактической занятости и диапазоны не должны пересекаться. авторПри этом 10-го числа была занята 2 раза ...я как-то к другу приехал в NY, договаривались заранее. а к нему еще один друг с семьей завалился... типа того тоже звали но он без подтверждения приехал... Ну вопшем хозяин квартиры ушел к своей екс спать :-). Так что в жизни все бывает :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 03:39:54 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
javajdbcавторПри этом 10-го числа была занята 2 разаВ примере время не пересекается, а только даты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 04:09:04 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
miksoft, а, ок.... ну тогда просто Код: sql 1. 2. 3. 4. 5. andrew_jr20 Кстати, о птичках. Вы когда-нибудь в гостиницах жили? Допустим 100$ в день. Если вы заедете и уедете 07.09.14 10:00 10.09.14 10:00 то сколько с вас денег возмут? А если заедете и уедете 10.09.14 19:00 11.09.14 10:00 ? Будьте осторожны с датами, а то посодют вас за кражу :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 04:35:52 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за ответы, но пока с мёртвой точки так и не сдвинулся :) javajdbc: насчёт денег - не волнуйтесь, не посодют :) Для денег есть свой финансовый рейтинг, который учитывает максимально возможные суммы, которые можно получить за данный период, и суммы, которые за этот период были внесены. А по Вашему запросу из последнего сообщения выдаёт не ту информацию, которая ожидается: то есть, если смотреть по моим изначальным данным, где должно выдать 5 суток - выдаёт всего 4, а если таблицу с данными изменить на приведённую ниже - то всего 2 вместо 3: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 10:44:54 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
andrew_jr20, не так посчитал - по вышеуказанной таблице вообще должно 4 дня выдать. А может упрощением задачи будет получение всех дат из этих периодов? То есть, имеем 2 периода: 07.09-10.09 10.09-11.09 Должны получить: 07.09, 08.09,09.09, 10.09,10.09 ,11.09. А уже из этой выборки дистинктом убрать лишнее и посчитать количество. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 12:53:24 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
andrew_jr20, Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 13:47:04 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
javajdbcКстати, о птичках. Вы когда-нибудь в гостиницах жили? Допустим 100$ в день. Если вы заедете и уедете 07.09.14 10:00 10.09.14 10:00 то сколько с вас денег возмут? А если заедете и уедете 10.09.14 19:00 11.09.14 10:00 ? Будьте осторожны с датами, а то посодют вас за кражу :-) эта задача не про отель, а про квартиры посуточно в них правило расчетного часа в 12:00 и продленного расчетного часа до 16:00 не действует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 13:53:49 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
Lumix, К сожалению, тоже не то :( Также для данных из первого поста выдаёт 4 вместо 5, а для второго набора - 2 вместо 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 13:57:36 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
andrew_jr20Lumix, К сожалению, тоже не то :( Также для данных из первого поста выдаёт 4 вместо 5, а для второго набора - 2 вместо 4. тогда такое решение сначала создаешь справочник всех дней например с 1 января 2000 года до 1 января 2050 года и заливаешь в него эти даты простейшим скриптом на том языке на каком тебе удобно потом можешь сделать дапм этого справочника и сложить его в поставку наподобие как обычно приходится таскать справочник geoip для определения географии по айпишнику Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. и на основе этого справочника сможешь фильтровать посещения, например, так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 15:23:14 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
Lumix, Спасибо за наводку, уже гораздо теплее Но тоже не совсем корректно: во-первых, неверно расставлены больше/меньше в условии, так вообще не попадает в справочник. И в таком виде работает только если заселение и выселение в рамках одних суток были произведены. Если заселились 7-го, выселились 9-го, то не попадает в границы справочника. Сижу сейчас, перепиливаю данный вариант с применением between, чтобы периоды заселений нормально джойнились с нужными периодами из справочника. Буду благодарен, если поможете - а то кручу-верчу, то лишние периоды из справочника цепляю, то наоборот пустой набор выдаёт :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 16:14:03 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
andrew_jr20Lumix, Спасибо за наводку, уже гораздо теплее Но тоже не совсем корректно: во-первых, неверно расставлены больше/меньше в условии, так вообще не попадает в справочник. И в таком виде работает только если заселение и выселение в рамках одних суток были произведены. Если заселились 7-го, выселились 9-го, то не попадает в границы справочника. Сижу сейчас, перепиливаю данный вариант с применением between, чтобы периоды заселений нормально джойнились с нужными периодами из справочника. Буду благодарен, если поможете - а то кручу-верчу, то лишние периоды из справочника цепляю, то наоборот пустой набор выдаёт :) у меня для тебя плохая новость!!! ты совершенно не понял решение которое я тебе подарил но поскольку по всем плохом всегда есть и хорошее, то в данном случае хорошее вот в чем: создавая решение через between ты путем ошибок сможешь насконец-то понять что именно я тебе подарил)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 16:53:25 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
Lumix, да почему ж не понял - идея понятна: каждому периоду для квартиры подбирается несколько строк из справочника, которые потом группировкой отбрасывают дубляжи и дают нужный результат :) Но раз уж на "ты" - сам-то пробовал прогнать запрос? :) В данном виде он всегда пустой набор выдаёт. То есть или я и правда не понял, тогда прошу подсказать, в чём я не прав - или в запросе логическая ошибка, тогда хотелось бы довести его до ума :) В любом случае - ещё раз спасибо за участие :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 17:26:53 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
andrew_jr20Lumix, К сожалению, тоже не то :( Также для данных из первого поста выдаёт 4 вместо 5, а для второго набора - 2 вместо 4. andrew_jr20, уточните бизнесс задачу: 1. могут ли резервации пересекатся (учитывая посекундную шкалу) ? 2. Какая минимальная длительность регистрации? 3. допустим имеется единственая резервация на два часа, с 23:00 одного дня до 01:00 следуюшего дня. Сколько дней комната была зарезервирована? 4. допустим имеется единственая резервация на две секунды, с 23:59 одного дня до 00:01 следуюшего дня. Сколько дней комната была зарезервирована? 5. Вы открываете почасовой бордель? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 17:47:19 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
javajdbc, по пунктам: 1) пересечений для одной квартиры быть не может; 2) длительность - хоть секундная, то есть ошибка оператора при вводе в программу заселения всё равно будет учитываться как "квартира была активная, спрос был" 3, 4) и там, и там по 2 дня 5) ага, с блэкджеком.. (с) на самом деле это для уже давно действующего в нашем городе сервиса сдачи квартир, смениля коммерческий директор, хочет мониторить - вот и придумал такие рейтинги ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 17:55:13 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
andrew_jr20Lumix, да почему ж не понял - идея понятна: каждому периоду для квартиры подбирается несколько строк из справочника, которые потом группировкой отбрасывают дубляжи и дают нужный результат :) Но раз уж на "ты" - сам-то пробовал прогнать запрос? :) В данном виде он всегда пустой набор выдаёт. То есть или я и правда не понял, тогда прошу подсказать, в чём я не прав - или в запросе логическая ошибка, тогда хотелось бы довести его до ума :) В любом случае - ещё раз спасибо за участие :) ну блииииин...))) вот вот более топорное решение, но надеюсь более простое в понимании: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 18:31:40 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
для предложенных данных Код: sql 1. 2. 3. 4. возврвщает 5 есть больший набор реальных данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 18:51:10 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
вадядля предложенных данных Код: sql 1. 2. 3. 4. возврвщает 5 есть больший набор реальных данных? Не так считает - высчитывает часы и из них формирует сутки, а нужно иное, на следующем периоде уже будет не то, что надо: 07.09.14 23:55 08.09.14 09:00 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 19:17:28 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
Lumix, вот рабочий вариант того запроса, попробовал уже разнообразные периоды - всегда как надо считает, спасибо за наводку :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 19:20:49 |
|
||
|
вывод количества суток, в которых квартира была занята посетителями
|
|||
|---|---|---|---|
|
#18+
andrew_jr20Lumix, вот рабочий вариант того запроса, попробовал уже разнообразные периоды - всегда как надо считает, спасибо за наводку :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. внимание, ловушка!!!))) этот запрос не учитывает квартиры, которые были сданы на несколько часов в течение одних суток))) например такую Код: sql 1. 2. а решение на секвенсорах учитывает 16546051 ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 19:43:47 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=163&tid=1834256]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
349ms |
get topic data: |
28ms |
get forum data: |
1ms |
get page messages: |
36ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 641ms |

| 0 / 0 |
