|
|
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
Добрый день. Мне необходимо выполнить запрос в таблицу, с выводом множества полей, но что бы одно поле осталось только уникальным, с большим id. Раньше я делал запрос так в PostgreSQL: select distinct on (num) id, num, sum from t order by id desc Как мне сделать такой же запрос в Oracle? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 13:58 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
Воспользоваться group by ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 14:13 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх Основные способы решения поставленной задачи імхо не то 1) на клиенте 2) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 3) .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 15:02 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
stax.., Почитай про distinct on в postgresql, поймёшь, что ты не прав. В оракле прямых аналогов нет, но то, что я привёл по ссылке - максимально близко передаёт суть хотелки автора - из группы строк выбрать одну, по критерию максимальности значения в одном из полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 15:47 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхstax.., Почитай про distinct on в postgresql, поймёшь, что ты не прав. В оракле прямых аналогов нет, но то, что я привёл по ссылке - максимально близко передаёт суть хотелки автора - из группы строк выбрать одну, по критерию максимальности значения в одном из полей. верю, лень читать ...... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 16:17 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхstax.., Почитай про distinct on в postgresql, поймёшь, что ты не прав. В оракле прямых аналогов нет, но то, что я привёл по ссылке - максимально близко передаёт суть хотелки автора - из группы строк выбрать одну, по критерию максимальности значения в одном из полей. Из набора: num - sum 001 - 100 002 - 200 003 - 500 001 - 150 003 - 149 Надо вернуть: 001 - 150 002 - 200 003 - 149 Я правильно понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 16:30 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
DshedooИз набора: num - sum 001 - 100 002 - 200 003 - 500 001 - 150 003 - 149 Надо вернуть: 001 - 150 002 - 200 003 - 149 Я правильно понимаю? Таки 001 - 150 002 - 200 003 - 500 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 04:32 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
Аналитика в чистом виде => читать про аналитические функции оракл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 05:08 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
Pavel_PVАналитика в чистом видеДля осознания чистоты твои мозги недостаточно замусорены знаниями. Читай первый ответ.andrey_anonymousВоспользоваться group by ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 05:40 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
Pavel_PVАналитика в чистом виде => читать про аналитические функции ораклуж если что и в чистом виде - то агрегатный first/last . Идеологически он ближе всего к постгресовскому DISTINCT ON ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 05:49 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
Всем спасибо. Нашел следующий вариант: select * from ( select id ,num ,ROW_NUMBER() OVER(PARTITION BY num ORDER BY id DESC) as ver from t ) q where ver = 1 Работает. Очень жаль, что в Oracle нет distinct on. Жаль что нет limit для ограничение выборки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 16:19 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
ZiB, Код: plsql 1. 2. 3. Даст такой же результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 16:29 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
ZiBЖаль что нет limitТы нажмакал клавиш сожаления больше, чем различий синтаксиса между кляузами distinct on и row_number или first/last. Тем более, что приведенный тобой пример не показателен, так как соответствует банальному групповому min/max. Мог бы сэкономленное от сожалений время потратить на чтение sql reference, тогда знал бы и про варианты limit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 16:32 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
ZiB............. Жаль что нет limit для ограничение выборки. У Oracle есть ROWNUM, можешь почитать WHERE ROWNUM <= number; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 16:38 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, ну мне надо саму последнюю версию суммы найти для num просто не написал sum ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 16:55 |
|
||
|
select distinct on в Oracle
|
|||
|---|---|---|---|
|
#18+
ZiB, Если бы Вы предоставили пример: Такой набор есть Такие условия задачи Такой набор хочу получить Вы бы получили быстрее и обоснованнее удовлетворяющий Вас ответ, остальное гадание/придумывание что Вы хотели сказать/получить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 17:10 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39491957&tid=1885523]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
144ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 434ms |

| 0 / 0 |
