Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=35695876&tid=2003805]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 409ms |

| 0 / 0 |
