|
|
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, не являюсь специалистом в этой области, но передо мной поставили задачу выводить среднее время нахождения объекта в статусе. Для этого существует таблица TKSTATUS и поле STATUSTRACKING, все вроде бы просто AVG (STATUSTRACKING). Но не все так просто, STATUSTRACKING является строковой и имеет не очень определенный формат в различных вариантах: 1) hh:mm:ss 2) hhh:mm:ss 3) hhhh:mm:ss Еще раз, формат поля не дата, но записано в виде времени прошедшего в состоянии, разделенного двоеточием: часы, минуты, секунды Возможно стоит hh*24*60 + mm*60 + ss, но я не знаю как это разделить и написать в функцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 11:22 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvin, 1) substr+instr вырезать поля 2) перевести в секунды 3) avg 4) обратно в чччч.mm.ss ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 11:47 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
А есть что-нибудь попроще, я думал можно в одном выражении сразу записать и вычисления секунд. А то как то больно сложно получается, не могу разобраться в работе INSTR (на сколько понял она позволяет определить позицию для вырезания данных для функции SUBSTR). Я не могу представить как вырезать переменное число символов ограниченных ':' при том в разных случаях по разному ограничены. Вот примеры полей этой таблицы: 2110:25:03 00:01:02 02:35:67 167:41:26 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 14:22 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvin, Код: plsql 1. 2. 3. 4. Ну и секунды аналогично ;D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 14:29 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvin, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. я так понимаю у вас минуты и секунды строго 2цифры, то можно еще проще зы можно регулярками, красывше но медленнее ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 14:45 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
stax..CrazyGooDvin, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. я так понимаю у вас минуты и секунды строго 2цифры, то можно еще проще зы можно регулярками, красывше но медленнее ..... stax Я сам написал под свой запрос, только вот не знаю как дальше писать. select to_number(substr(STATUSTRACKING, 0, (INSTR (STATUSTRACKING,':'))-1)) as hh, to_number(substr(STATUSTRACKING, -5, 2)) as mm, to_number(substr(STATUSTRACKING, -5, 2)) as ss from TKSTATUS where STATUSTRACKING is not NULL Нужно теперь определить среднее значение из всех значений, но у меня не получается сложить эти данные to_number(substr(STATUSTRACKING, -5, 2)) почему то возвращает не верное число ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 15:22 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvin, Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 15:28 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvin to_number(substr(STATUSTRACKING, -5, 2)) почему то возвращает не верное число посмотрите що Вам возвращает STATUSTRACKING и substr(STATUSTRACKING, -5, 2), а там и определитесь что дальше делать (как обходіть) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:05 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvin, Если в конце пробел то -5 попадет не в минуты и как следствие не в число ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:08 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
DshedooCrazyGooDvin, Код: plsql 1. 2. 3. 4. 5. именно, я пошел правда уже чуть дальше Код: plsql 1. 2. 3. 4. 5. 6. 7. Другой вопрос, тут есть ситуация когда запись с таким статусом встречается несколько раз в таблице по одному и тому же ticketid, в таких случаях эти записи надо просуммировать и лишь потом вычислять среднее, хм или это уже просиходит, не могу сообразить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:15 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvinDshedooCrazyGooDvin, Код: plsql 1. 2. 3. 4. 5. именно, я пошел правда уже чуть дальше Код: plsql 1. 2. 3. 4. 5. 6. 7. Другой вопрос, тут есть ситуация когда запись с таким статусом встречается несколько раз в таблице по одному и тому же ticketid, в таких случаях эти записи надо просуммировать и лишь потом вычислять среднее, хм или это уже просиходит, не могу сообразить... что мешает сделать тестовый пример и узнать наверняка?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:25 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
trace.logCrazyGooDvinпропущено... именно, я пошел правда уже чуть дальше Код: plsql 1. 2. 3. 4. 5. 6. 7. Другой вопрос, тут есть ситуация когда запись с таким статусом встречается несколько раз в таблице по одному и тому же ticketid, в таких случаях эти записи надо просуммировать и лишь потом вычислять среднее, хм или это уже просиходит, не могу сообразить... что мешает сделать тестовый пример и узнать наверняка?? Проверил, считает это разными значениями и это сильно влияет на результат, нужно как то суммировать вначале все времена с одинаковыми статуса и одинаковыми tiketid. Где и как подскажите пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:59 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvin, я не понял проблему Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:11 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
stax..CrazyGooDvin, я не понял проблему Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. .... stax Спасибо, создал свой запрос, не так красиво и стройно, но как умею Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 15:39 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvin, У Вас среднеее по всей виборке, поетому можно без подзапроса вложенные avg(sum()) Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2017, 16:30 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
stax..CrazyGooDvin, У Вас среднеее по всей виборке, поетому можно без подзапроса вложенные avg(sum()) Код: plsql 1. 2. 3. 4. 5. 6. Действительно, спасибо! Вот что получилось: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 09:56 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
Как получить результат отношения двух count? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 15:07 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvin, Что Вы вкладываете в понятие "отношение"? и стоит ли делать селект из таблицы " from TICKET" в которой более одной записи чтоб получить ОДИН результат. Вы его размножите ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 16:10 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvin, не по теме TO_DATE(sysdate -1) TO_DATE лишнее (вернее вредное) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 16:21 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvin, Я бы написал так Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. но подумай над делением на 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 16:21 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
stax.., Согласен, так же как и count в to_number лишнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 16:23 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
MaximaXXLЯ бы написал так Код: plsql 1. 2. 3. А я бы так не написал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 16:23 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Да выдернул из оригинала не подумав =) Вот: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 16:28 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
MaximaXXLCrazyGooDvin, Что Вы вкладываете в понятие "отношение"? и стоит ли делать селект из таблицы " from TICKET" в которой более одной записи чтоб получить ОДИН результат. Вы его размножите ... Деление результат одного запроса на результат другого запроса авторCrazyGooDvin, не по теме TO_DATE(sysdate -1) TO_DATE лишнее (вернее вредное) ..... stax авторCrazyGooDvin, Я бы написал так select count( case when t.REPORTDATE between (trunc (TO_DATE(sysdate -1),'DDD')) and (trunc (TO_DATE(sysdate),'DDD')) then 1 end) / count( case when t.actualfinish between (trunc (TO_DATE(sysdate -1),'DDD')) and (trunc (TO_DATE(sysdate),'DDD')) then 1 end) from ticket t where CLASS = 'ИНЦИДЕНТ' and (t.REPORTDATE between (trunc (TO_DATE(sysdate -1),'DDD')) and (trunc (TO_DATE(sysdate),'DDD')) or t.actualfinish between (trunc (TO_DATE(sysdate -1),'DDD')) and (trunc (TO_DATE(sysdate),'DDD')) ) но подумай над делением на 0 не работает, пишет from нету где ожидался авторMaximaXXL Я бы написал так TO_DATE(sysdate -1) ... TO_DATE(sysdate) А я бы так не написал... А как иначе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 16:37 |
|
||
|
Требуется преобразовать текстовую строку в число
|
|||
|---|---|---|---|
|
#18+
CrazyGooDvin, to_date(sysdate) из-за неявного перобразование получим шо-то типа TO_DATE(TO_CHAR(SYSDATE)) тоесть дату в строку, а строку обратно в дату похожая история и с to_number(count(*)) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 16:45 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39468850&tid=1885788]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
146ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 465ms |

| 0 / 0 |
