|
|
|
Задача: определить ближайший к заданной дате год
|
|||
|---|---|---|---|
|
#18+
Привет. Пожалуйста, нужна помощь, есть задача: определить ближайший к заданной дате год, когда 31 декабря придется на субботу . Решение через рекурсию, то есть до того момента пока день недели в том (TEMP) году не будет равен 6. Но загвоздка в том, что код не получается универсальным из-за того, что в WHERE для TEMP'а прописывается явно (к примеру < 2026). Подскажите как можно этого избежать? (первая строка в with для примера) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2016, 22:15 |
|
||
|
Задача: определить ближайший к заданной дате год
|
|||
|---|---|---|---|
|
#18+
Andrey19967Решение через рекурсию, то есть до того момента пока день недели в том (TEMP) году не будет равен 6. Ты будeшь удивлeн, но далеко во всех странaх недeля начинается с тяжелогo дня понедельника . Так что открой для себя формат IW: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2016, 22:49 |
|
||
|
Задача: определить ближайший к заданной дате год
|
|||
|---|---|---|---|
|
#18+
Andrey19967Подскажите как можно этого избежать?В подобных задачах можно (и нужно) самого recursive subquery factoring избежать Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2016, 23:46 |
|
||
|
Задача: определить ближайший к заданной дате год
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopВ подобных задачах можно (и нужно) самого recursive subquery factoring избежать Ну насчет "и нужно" это бабушка надвое сказала. A вот пришпиндоливать GROUP BY уж точно не надо: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Но это мелoчи, главное твое решение нерабочее: Код: 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. Так-что либо: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. либо: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 04:55 |
|
||
|
Задача: определить ближайший к заданной дате год
|
|||
|---|---|---|---|
|
#18+
Andrey19967, Для рекурсивного варианта запроса формулировать стоп-условие я бы стал так: вторую часть Union выдавать в выходной набор тех строк, у которых в предшествующем наборе не было суббот или текущая строка содержит субботу. Т.е. Код: 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. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 13:43 |
|
||
|
Задача: определить ближайший к заданной дате год
|
|||
|---|---|---|---|
|
#18+
SYНу насчет "и нужно" это бабушка надвое сказала. A вот пришпиндоливать GROUP BY уж точно не надоНасчет того, что group by не надо и что надо допилить для граничных условия согласен. А про "нужно" - rec with всегда (когда задача может быть решена connect by без перебора) медленнее connect by, глючнее и больше букв. Можно еще вспомнить про деградации типа current reads . Конечно, если надо сгенерировать 10, 100, 10000 строк то пофиг. Только не надо приучать к плохому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 14:25 |
|
||
|
Задача: определить ближайший к заданной дате год
|
|||
|---|---|---|---|
|
#18+
SY, при первом чтении проскользил мимо твоего первого в теме поста. сейчас перечитал - ++! Дважды красивый заход. Разглядывать - маленькое, но вполне отчетливое удовольствие. Как коньяк средних лет - с выраженным, но не навязчивым ароматом. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 23:00 |
|
||
|
Задача: определить ближайший к заданной дате год
|
|||
|---|---|---|---|
|
#18+
booby, большое спасибо, вот примерно такое что-то и хотелось реализовать, но немного не хватило ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 21:44 |
|
||
|
|

start [/forum/topic.php?fid=52&gotonew=1&tid=1886952]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
154ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 481ms |

| 0 / 0 |
