|
|
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
Есть ряд дат с различными значениями статуса. Например: DT STATUS 01.02.2017 1 05.02.2017 2 07.02.2017 2 21.02.2017 3 24.02.2017 1 25.02.2017 3 28.02.2017 2 03.03.2017 1 Необходимо подсчитать общее количество дней для каждого из статусов. В результате должно получиться следующее: Для STATUS=1: с 01.02.2017 по 04.02.2017: 4 дня с 24.02.2017 по 24.02.2017: 1 день с 03.03.2017 по 03.03.2017: 1 день итого: 6 дней Для STATUS=2: с 05.02.2017 по 20.02.2017: 16 дней с 28.02.2017 по 02.03.2017: 3 дня итого: 19 дней Для STATUS=3: с 21.02.2017 по 23.02.2017: 3 дня с 25.02.2017 по 27.02.2017: 3 дня итого: 6 дней Я вполне себе представляю, как это выполнить с помощью “оконных” функций. А как это сделать без “оконных” функций? Причём так, чтобы подошло для любой RDBMS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 20:20 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
X3 ктоПричём так, чтобы подошло для любой RDBMS.а че тогда подался в етот топик? подруку подвернулся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 20:25 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
на скорую руку Код: plsql 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. STATUSCOUNT(1)1621936 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 21:15 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
--Eugene--, коннект бай распространен еще менее, чем анатилика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 22:11 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
andreymxконнект бай распространен еще менее, чем анатиликаТС не сказал, что без коннект бая. а про то, "чтобы подошло для любой RDBMS" - я ему кагбы сразу намекнул ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 22:34 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
Уж не знаю, насколько распространена арифметика дат. И совсем не хотел бы гонять такое по реальной базе. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 22:59 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
X3 кто, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 09:21 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
X3 ктоПричём так, чтобы подошло для любой RDBMS. Операции с датами тоже должны быть "подходящими для любой RDBMS"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 09:47 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Ради интереса, как еще можно аналитикой, с помощью keep например? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 11:22 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
rekrabbe, first/last value, nth_value ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 12:17 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
--Eugene--X3 ктоПричём так, чтобы подошло для любой RDBMS.а че тогда подался в етот топик? подруку подвернулся? А разве есть раздел форума, посвященный языку SQL без привязки к конкретной RDBMS? Кроме того, львиная доля моего общения с RDBMS посвящена именно ORACLE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 18:02 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
--Eugene--andreymxконнект бай распространен еще менее, чем анатиликаТС не сказал, что без коннект бая. а про то, "чтобы подошло для любой RDBMS" - я ему кагбы сразу намекнул Я начал с того, что решил эту задачу с помощью оконных функций. А с меня потребовали использовать строго SQL92. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 18:15 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
X3 ктоА с меня потребовали использовать строго SQL92. Ну тогда: 1. Заводим табличку-календарь. 2. В порядке возрастания дат "с различными значениями статуса" проводим update календаря значением статуса по критерию CALENDAR.DT >= STATUS.DT 3. Повторяем ежедневно для значения статуса >=<текущая дата>. 4. select status, count(*) from calendar where dt <= <текущая дата> group by dt Вариация: календарь ограничен сверху текущей датой. Ежедневно в календарь добавляется копия последней (order by dt) записи календаря, помеченная текущей датой. select status, count(*) from calendar group by dt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 18:26 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousX3 ктоА с меня потребовали использовать строго SQL92. Ну тогда: 1. Заводим табличку-календарь. 2. В порядке возрастания дат "с различными значениями статуса" проводим update календаря значением статуса по критерию CALENDAR.DT >= STATUS.DT 3. Повторяем ежедневно для значения статуса >=<текущая дата>. 4. select status, count(*) from calendar where dt <= <текущая дата> group by dt Вариация: календарь ограничен сверху текущей датой. Ежедневно в календарь добавляется копия последней (order by dt) записи календаря, помеченная текущей датой. select status, count(*) from calendar group by dt А неплохой подход. Благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 19:02 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
X3 кто, тогда еще проще хранить в исходной таблице кроме даты изменения статуса еще дату след. изменения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2017, 10:04 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
coborhcтогда еще проще хранить в исходной таблице кроме даты изменения статуса еще дату след. изменения.Это избыточность данных. Сиречь противоречивость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2017, 12:27 |
|
||
|
Как обработать ряд дат без использования оконных функций?
|
|||
|---|---|---|---|
|
#18+
Eliccoborhcтогда еще проще хранить в исходной таблице кроме даты изменения статуса еще дату след. изменения.Это избыточность данных. Сиречь противоречивость. иногда избыточность полезна напр непрерывный диапазон, достаточно даты действует с, но удобно c избыточностью дата_по=LEAD(dat_from)-"1" ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 12:28 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=155&tid=1885630]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
67ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 223ms |
| total: | 380ms |

| 0 / 0 |
