В Oracle мне нужно выполнить среднее значение столбца (timeInmillis) из запроса соединения, который показывает «дублированные» значения (относительно столбца timeInmillis из таблицы 1). Мне нужно передать значения из соединения, но получить правильный результат для среднего.Применить Substr к отчетливому результату в оракуле
Я пытаюсь сделать что-то вроде этого:
select AVG(SUBSTR(DISTINCT(concat(id1,timeInMillis)),LENGTH(id1)+1,LENGTH(CONCAT(id1,timeInMillis)))), someColumn, otherColumn
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id1 = t2.id1 group by somestuff,someotherStuff;
Если я пытаюсь сделать это, я получаю:
ORA-00936: отсутствует выражение
Этот будет служить примером:
Таблица 1:
id1 timeInMillis otherColumn
1 5 X
2 15 X
Table2:
id2 id1 otherColumn
--------------------
1 1 X
2 1 X
3 2 X
С моей присоединиться я получаю ResultSet так:
id1 id2 timeInmillis moreColumns
--------------------------------
1 1 5 X
1 2 5 X
2 3 15 X
Мне нужно, чтобы получить среднее значение 5 и 15 (с отчетливым id1), но я не может изменить, где часть sql (причина других значений, которые я получаю)
My result should be:
AVG(TIMEINMILLIS) otherResults
----------------------------------
10 'whatever'
Спасибо заранее.
DISTINCT не является функцией в столбце, он работает для всей выбранной строки. Можете ли вы предоставить образцы данных и ожидаемый результат, и мы, возможно, поймем, что вы делаете. – jarlh
это немного сложно объяснить, но я отредактировал вопрос, чтобы сделать это. – elcadro
Я все еще не понимаю. «Пропуск 5 и 15 (с отдельным id1)»? Что нужно делать с идентификатором 1? И почему существуют два идентификатора? В вашем примере запроса вы присоединяете две таблицы с их идентификаторами * matching *; в ваших образцовых данных у вас есть записи с * разными * идентификаторами.Не могли бы вы еще раз изменить свой вопрос и рассказать нам, что вы пытаетесь сделать? –