Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
Есть таблица в фиксируются различные работы, в каждой строке есть дата и время начала и дата и время окончания.. Между временем окончания текущей и началом следующей есть промежутки. Подскажите пожалуйста как их высчитать. Сложности в том что данные над которыми надо проводить операции находятся в разных строках и столбцах. Может кто с таким сталкивался.. буду очень благодарен за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 11:28 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
Provider... Первое что в голову пришло, соедините ету табличку саму с собой Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 11:38 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
а как насчет того что дата окончания и дата начала которые необходима отнять находятся в соседних СТРОКАХ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 11:43 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
Providerа как насчет того что дата окончания и дата начала которые необходима отнять находятся в соседних СТРОКАХ ? а разве соединением "from table t1, table t2 " мы не поместили их в одну и туже "виртуальную" строку ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 11:45 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
тоесть от data_end одной строки надо отнять data_start следующей строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 11:46 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
Providerтоесть от data_end одной строки надо отнять data_start следующей строки можно и так , но результат окажется отрицательный ... в смысле с минусом. нужно будет ещё и знак менять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 11:48 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
KRED, Вы немного неправильно меня поняли. Есть таблица: -------------------------------------------------------------------------- I ..................I data_start I data_end I ............. I -------------------------------------------------------------------------- I...................I 01.01.2008 13:45:12 I 01.01.2008 13:46:20 I ..............I -------------------------------------------------------------------------- I...................I 01.01.2008 13:46:50 I 01.01.2008 13:47:35 I ..............I -------------------------------------------------------------------------- ....................................................................... Вот мне надо по всем записям вычислить промежуток между data_end и data_start следующей строки. (в примере это - 01.01.2008 13:46:20 - 01.01.2008 13:46:50 = 20сек) По преобразованию можно не писать, подскажите как организовать саму операцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 11:56 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
выше в примере ошибся, .... =30сек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 11:59 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
ProviderKRED, Вы немного неправильно меня поняли. Есть таблица: -------------------------------------------------------------------------- I ..................I data_start I data_end I ............. I -------------------------------------------------------------------------- I...................I 01.01.2008 13:45:12 I 01.01.2008 13:46:20 I ..............I -------------------------------------------------------------------------- I...................I 01.01.2008 13:46:50 I 01.01.2008 13:47:35 I ..............I -------------------------------------------------------------------------- ....................................................................... Вот мне надо по всем записям вычислить промежуток между data_end и data_start следующей строки. (в примере это - 01.01.2008 13:46:20 - 01.01.2008 13:46:50 = 20сек) По преобразованию можно не писать, подскажите как организовать саму операцию. Вы наверное издеваетесь ??? я же вам дал пример использования !!! вы не въехали в тему и наежаете на меня что я не понял !!! Покажите пожалуста почему мой вариант решения НЕ РАБОТАЕТ !!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 12:09 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
на "min(t2.date_start) - t1.data_end" выдает ошибку "ORA-00937: not a single-group group function" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 12:21 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
Provider, какой скл ты подсовываеш ??? покажи точный. И Постгрес вообщето не даёт ошибок "ORA" :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 12:35 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
Providerна "min(t2.date_start - t1.data_end)" выдает ошибку "ORA-00937: not a single-group group function"а подумать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 12:37 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
KREDИ Постгрес вообщето не даёт ошибок "ORA" :-)этопять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 12:38 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
assaProviderна "min(t2.date_start - t1.data_end)" выдает ошибку "ORA-00937: not a single-group group function"а подумать net ... min(t2.date_start - t1.data_end) нельзя ! нужно именно самую маленькую "t2.date_start" после t1.data_end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 12:41 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
KREDProvider... Первое что в голову пришло, соедините ету табличку саму с собой Код: plaintext 1. 2. 3. 4. 5. 6. 7. болванки тут: http://sql.ru/forum/actualthread.aspx?tid=619045 (слегка почистить от лишнего - будет то, что нужно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 12:42 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
assa, я не занимался оптимизацией его .... скорее нужно чем можно :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 12:44 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
KREDassaProviderна "min(t2.date_start - t1.data_end)" выдает ошибку "ORA-00937: not a single-group group function"а подумать net ... min(t2.date_start - t1.data_end) нельзя ! нужно именно самую маленькую "t2.date_start" после t1.data_endчото сёня спю. не вчитывается. да, вы правы. там, у чела, групбай по t1.data_end не указан, чай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 12:45 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
assa, авторгм. а кореллированным подзапросом с LIMIT 1 оптимизатору будет не проще? пожет тот постгрес (который ORA кидает) сам разрулит такую ситуацию ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 12:48 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
KREDпожет тот постгрес (который ORA кидает) сам разрулит такую ситуацию ???могабыть пыжовый "энтерпрайс" уже дошел по части эмуляции оракла до выдачи ORA-льных сообщений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 13:48 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
Посмотрите в тему: "Помогите реализовать запрос на PL\SQL" я просил помочь по PL/SQL. Всем спасибо за советы. Я сделал все по-другому - с помощью функции LEAD. Работает замечательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 15:43 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
ProviderПосмотрите в тему: "Помогите реализовать запрос на PL\SQL" я просил помочь по PL/SQL. Всем спасибо за советы. Я сделал все по-другому - с помощью функции LEAD. Работает замечательно. Покажи нам где в постгрестовой доке описании этой функции ! Очень хочется почитать. Если быть ещо более точным ссылку с сайта www.postgresql.org приведи пожалуста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 16:21 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
Providerна "min(t2.date_start) - t1.data_end" выдает ошибку "ORA-00937 : not a single-group group function" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2008, 03:33 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
Какой postgre? Я же написал - PL/SQL а не postgre SQL! Это разные вещи! А написал в этой ветки потому как ветки по PL/SQL просто нет... Вы че все читать не умеете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 10:05 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
А вот описание - http://www.adp-gmbh.ch/ora/sql/analytical/lag.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 10:07 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
KRED ты просил весь запрос сбросить? Вот - select w.fullname, wt.descr type, pr.name reason, count(1) locations, sum(od.packs) packs, round(sum(od.packs)/count(1),2) packs_in_cells, to_char(trunc(Sysdate) + sum(od.work_time)/(24 * 60 * 60), 'HH24:MI:SS') sum_time, to_char(trunc(Sysdate) + (sum(od.work_time)/count(1))/(24 * 60 * 60), 'HH24:MI:SS') time_one_loc, to_char(trunc(Sysdate) + ( case when sum(od.packs)=0 then 0 else (sum(od.work_time)/sum(od.packs)) end )/(24 * 60 * 60), 'HH24:MI:SS') time_one_pack from wms.oldpick_detail od, wms.oldpick ol, wms.pick_reason pr, wms.worker w, wms.work_type wt where od.deleted > to_date('04.12.2008 09:00:00', 'DD.MM.YYYY HH24:MI:SS') and od.deleted < to_date('04.12.2008 21:00:00', 'DD.MM.YYYY HH24:MI:SS') and od.worker_id > 0 -- and ol.reason = 'order_picking' and od.complete = 't' and w.id=od.worker_id and wt.name=od.opcode and not ( od.opcode = 'ABSENCE' or (ol.reason = 'order_picking' and od.opcode = 'PICK') ) -- and od.opcode in ('FROM_CNT', 'FROM_PAL') and od.pick_id=ol.id and pr.id=ol.reason group by (w.fullname, wt.descr, pr.name) union select w.fullname, 'Перемещение отобранной паллеты в ЕТ%' type, pr.name reason, count(1) locations, sum(od.packs) packs, round(sum(od.packs)/count(1),2) packs_in_cells, to_char(trunc(Sysdate) + sum(od.work_time)/(24 * 60 * 60), 'HH24:MI:SS') sum_time, to_char(trunc(Sysdate) + (sum(od.work_time)/count(1))/(24 * 60 * 60), 'HH24:MI:SS') time_one_loc, to_char(trunc(Sysdate) + ( case when sum(od.packs)=0 then 0 else (sum(od.work_time)/sum(od.packs)) end )/(24 * 60 * 60), 'HH24:MI:SS') time_one_pack from wms_archive.oldpick_detail od, wms_archive.oldpick ol, wms.pick_reason pr, wms.worker w, wms.work_type wt where od.deleted > to_date('04.12.2008 09:00:00', 'DD.MM.YYYY HH24:MI:SS') and od.deleted < to_date('04.12.2008 21:00:00', 'DD.MM.YYYY HH24:MI:SS') and od.worker_id > 0 and ol.reason = 'order_picking' and od.opcode = 'PICK' and od.complete = 't' and od.order_id = 0 and w.id = od.worker_id and wt.name = od.opcode and od.pick_id = ol.id and pr.id = ol.reason group by (w.fullname, wt.descr, pr.name) union select w.fullname, 'Перемещение монопаллеты в Е%' type, pr.name reason, count(1) locations, sum(od.packs) packs, round(sum(od.packs)/count(1),2) packs_in_cells, to_char(trunc(Sysdate) + sum(od.work_time)/(24 * 60 * 60), 'HH24:MI:SS') sum_time, to_char(trunc(Sysdate) + (sum(od.work_time)/count(1))/(24 * 60 * 60), 'HH24:MI:SS') time_one_loc, to_char(trunc(Sysdate) + ( case when sum(od.packs)=0 then 0 else (sum(od.work_time)/sum(od.packs)) end )/(24 * 60 * 60), 'HH24:MI:SS') time_one_pack from wms_archive.oldpick_detail od, wms_archive.oldpick ol, wms.pick_reason pr, wms.worker w, wms.work_type wt where od.deleted > to_date('04.12.2008 09:00:00', 'DD.MM.YYYY HH24:MI:SS') and od.deleted < to_date('04.12.2008 21:00:00', 'DD.MM.YYYY HH24:MI:SS') and od.worker_id > 0 and ol.reason = 'order_picking' and od.opcode = 'PICK' and od.complete = 't' and od.order_id > 0 and w.id = od.worker_id and wt.name = od.opcode and od.pick_id = ol.id and pr.id = ol.reason group by (w.fullname, wt.descr, pr.name) union select w.fullname, 'Перемещение S->S%' type, pr.name reason, count(1) locations, sum(od.packs) packs, round(sum(od.packs)/count(1),2) packs_in_cells, -- lead (od.start_date,1, null) over (order by od.pick_id) d, case when lead (od.pick_id,1) over (order by od.pick_id) = od.pick_id then to_char(trunc(Sysdate) + (((lead (od.start_date,1) over (order by od.pick_id, od.start_date))-od.finish_date)), 'HH24:MI:SS') else to_char(trunc(Sysdate) + 0, 'HH24:MI:SS') end sum_time, to_char(trunc(Sysdate) + (sum(od.work_time)/count(1))/(24 * 60 * 60), 'HH24:MI:SS') time_one_loc, to_char(trunc(Sysdate) + ( case when sum(od.packs)=0 then 0 else (sum(od.work_time)/sum(od.packs)) end )/(24 * 60 * 60), 'HH24:MI:SS') time_one_pack from wms_archive.oldpick_detail od, wms_archive.oldpick ol, wms.pick_reason pr, wms.worker w, wms.work_type wt where od.deleted > to_date('04.12.2008 09:00:00', 'DD.MM.YYYY HH24:MI:SS') and od.deleted < to_date('04.12.2008 21:00:00', 'DD.MM.YYYY HH24:MI:SS') and od.worker_id > 0 and ol.reason = 'order_picking' -- and od.opcode = 'PICK' and od.complete = 't' and (wt.name = 'FROM_CNT' or wt.name = 'FROM_PAL') and od.order_id > 0 and w.id = od.worker_id and wt.name = od.opcode and od.pick_id = ol.id and pr.id = ol.reason group by w.fullname, wt.descr, pr.name, od.pick_id, od.start_date, od.finish_date order by fullname ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 10:14 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
ProviderКакой postgre? Я же написал - PL/SQL а не postgre SQL! Это разные вещи! А написал в этой ветки потому как ветки по PL/SQL просто нет... Вы че все читать не умеете?тут не смотрели? http://sql.ru/forum/actualtopics.aspx?bid=3 или "вы че, читать не умеете?" зы пл-скл (ПроцедурныйЛенгвидж-СКЛ) есть и в пг, но пг не выдает "ора", и в нем нет пока аналитич. функций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 11:20 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
ProviderKRED ты просил весь запрос сбросить? Вот - Код: plaintext 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. ps вы еще и писать (теги ставить) не умеете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 11:23 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
assa ps вы еще и писать (теги ставить) не умеете Нет, не умел, я новичок на форуме, что тут такого. Может и не в ту ветку написал - виноват. Вообще я использую PL/SQL Developer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 11:47 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
Providerassa ps вы еще и писать (теги ставить) не умеете Нет, не умел, я новичок на форуме, что тут такого. Может и не в ту ветку написал - виноват. Вообще я использую PL/SQL Developer.ну вот и разобрались. бывает. ЗЫ. а в пятницу людям бывает необходимо и пошутить. т.ч. тоже все понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 13:28 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
Providerassa ps вы еще и писать (теги ставить) не умеете Нет, не умел, я новичок на форуме, что тут такого. Может и не в ту ветку написал - виноват. Вообще я использую PL/SQL Developer. А дерзить уже научились ?? может не тому учились ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 15:11 |
|
||
|
Помогите реализовать запрос на PL\SQL!
|
|||
|---|---|---|---|
|
#18+
что-то вроде такого: select it.start_date, it.end_date, (select min(start_date) from interest_table where 1=1--здесь условия and start_date>=it.end_date) time_dif from interest_table it в таком запросе выберутся записи и промежутки между текущей и последующей операцией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 23:37 |
|
||
|
|

start [/forum/topic.php?all=1&fid=53&tid=2003805]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
132ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 446ms |

| 0 / 0 |
