|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 08:16 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
Gallemar, в чем именно некорректность данных - предлагается догадаться? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 08:23 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
Добрый Э - ЭхGallemar, в чем именно некорректность данных - предлагается догадаться? Привет, Паша Выдает 147 строк, хотя по условию перебирается время до 23 часов, ну и в самой выборе данные от 0 до 11, хотя если запрос руками выполняешь данные гораздо больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 08:34 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
Gallemar, Первое что бросается в глаза - параметр TIME_2 date, а прибавляешь часы. У date часов нет. Зависит от диалекта конечно... Второе. Входной параметр используется как переменная. Не знаю можно ли так делать, но я бы в любом случае заводил локальную переменную в процедуре, для таких манипуляций. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 09:01 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
fraks, первый диалект ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 09:07 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
fraksВторое. Входной параметр используется как переменная. Не знаю можно ли так делать, но я бы в любом случае заводил локальную переменную в процедуре, для таких манипуляций. А как тогда? Ты же видишь, у меня выборка с between. Если только вместо while (TIME_2 < '2017.05.17 00:00') сделать классическую переменную a la i=i+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 09:11 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#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. 24. 25. 26. 27. 28.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 09:15 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
Gallemar, Что "не помогло"? По-прежнему 147 строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 09:41 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
Gallemar, Отформатировал процедуру по своим стандартам, получилось так: Код: 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.
Количество выводимых записей - это количество часов между переданным в процедуру значением time_2 и заданной в процедуре константой. Ни от каких данных в процедуре количество выдаваемых записей не зависит. Поскольку передаваемое в процедуру значения ты не озвучил - то и непонятно какие цифры ты ожидал увидеть и какие получил, и что не так как ты ожидал. Если из процедуры выкинуть все что не влияет на количество записей на выходе то останется вот это: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
но тут уже как бы совсем просто ошибку найти. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 09:52 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
WildSeryGallemar, Что "не помогло"? По-прежнему 147 строк? нет,теперь с этим порядок, в самой выборке данные не соответствуют действительности ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 10:16 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
GallemarWildSeryGallemar, Что "не помогло"? По-прежнему 147 строк? нет,теперь с этим порядок, в самой выборке данные не соответствуют действительности По поводу данных - сама процедура выглядит как-то странно. Ты задаешь параметрами некое временное окно, запросом узнаешь количество неких записей в этом временном окне. Затем сдвигаешь это окно на час вперед и снова смотришь. Скорее всего у тебя при сдвижке окна бОльшая часть записей попадает в следующее окно, повторяясь. Физический смысл таких данных я не могу постичь. :) Разве что окно шириной ровно в 1 час, но тогда смысл задавать его извне непонятен. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 10:25 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
fraksGallemar, Количество выводимых записей - это количество часов между переданным в процедуру значением time_2 и заданной в процедуре константой. Ни от каких данных в процедуре количество выдаваемых записей не зависит. Поскольку передаваемое в процедуру значения ты не озвучил - то и непонятно какие цифры ты ожидал увидеть и какие получил, и что не так как ты ожидал. Входные данные: TIME_1 '16.05.2017 08:00:00' TIME_2 '16.05.2017 09:00:00' ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 10:26 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
Gallemar, Надеюсь, что ты учёл, что входные параметры у тебя в обратном порядке? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 10:54 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
Gallemar, Далее у меня бы возник вопрос по поводу between - никогда не мог запомнить включает он в себя границы значений или нет, поэтому вместо between я всегда пишу просто два условия. Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 11:42 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
fraksGallemar, Далее у меня бы возник вопрос по поводу between - никогда не мог запомнить включает он в себя границы значений или нет, поэтому вместо between я всегда пишу просто два условия. [/src] Оказалось в этом проблема, спасибо. Вопрос ещё можно? Я же не смогу в результат выборки добавить сам временной интервал, в котором считалось кол-во документов? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 11:54 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
Gallemar, Почему не можешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 11:56 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
fraks...вопрос по поводу between - никогда не мог запомнить включает он в себя границы значений или нетВсегда включает, чего тут запоминать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 12:00 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
GallemarfraksGallemar, Далее у меня бы возник вопрос по поводу between - никогда не мог запомнить включает он в себя границы значений или нет, поэтому вместо between я всегда пишу просто два условия. [/src] Оказалось в этом проблема, спасибо. Вопрос ещё можно? Я же не смогу в результат выборки добавить сам временной интервал, в котором считалось кол-во документов? Данные на выход выдаются по suspend. Что к этому времени в них будет лежать - то и выдаст. Примерно так я бы делал: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 12:10 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#18+
Gallemar, Ну и чисто по общему дизайну процедуры, я бы во входных параметрах задавал начальную и конечную дату (а не в константе), ширина временного окна и так захардкожена, нет смысла обязывать зачем-то задавать вторую дату на входе в соответствии с этим жестким кодом. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 12:16 |
|
Вывод данных за день в разрезе времени
|
|||
---|---|---|---|
#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. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2017, 12:31 |
|
|
start [/forum/topic.php?fid=40&msg=39454311&tid=1561590]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 297ms |
total: | 563ms |
0 / 0 |