powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / select distinct on в Oracle
17 сообщений из 17, страница 1 из 1
select distinct on в Oracle
    #39491578
ZiB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ZiB
Гость
Добрый день.
Мне необходимо выполнить запрос в таблицу,
с выводом множества полей, но что бы одно поле осталось только уникальным,
с большим id.
Раньше я делал запрос так в PostgreSQL:
select distinct on (num) id, num, sum from t order by id desc

Как мне сделать такой же запрос в Oracle?
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39491591
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воспользоваться group by
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39491620
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39491632
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эх Основные способы решения поставленной задачи
імхо не то

1) на клиенте
2)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
  1* select lag(null,1,deptno) over (partition by deptno order by ename) d,ename from emp order by deptno,ename
SQL> /

D                                        ENAME
---------------------------------------- ----------
10                                       CLARK
                                         KING
                                         MILLER
20                                       ADAMS
                                         FORD
                                         JONES
                                         SCOTT
                                         SMITH
30                                       ALLEN
                                         BLAKE
                                         JAMES
                                         MARTIN
                                         TURNER
                                         WARD

14 rows selected.



3) ....

stax
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39491693
stax..,

Почитай про distinct on в postgresql, поймёшь, что ты не прав. В оракле прямых аналогов нет, но то, что я привёл по ссылке - максимально близко передаёт суть хотелки автора - из группы строк выбрать одну, по критерию максимальности значения в одном из полей.
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39491719
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхstax..,

Почитай про distinct on в postgresql, поймёшь, что ты не прав. В оракле прямых аналогов нет, но то, что я привёл по ссылке - максимально близко передаёт суть хотелки автора - из группы строк выбрать одну, по критерию максимальности значения в одном из полей.

верю, лень читать

......
stax
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39491730
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхstax..,

Почитай про distinct on в postgresql, поймёшь, что ты не прав. В оракле прямых аналогов нет, но то, что я привёл по ссылке - максимально близко передаёт суть хотелки автора - из группы строк выбрать одну, по критерию максимальности значения в одном из полей.

Из набора:

num - sum
001 - 100
002 - 200
003 - 500
001 - 150
003 - 149

Надо вернуть:
001 - 150
002 - 200
003 - 149

Я правильно понимаю?
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39491949
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
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39491951
Pavel_PV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Аналитика в чистом виде => читать про аналитические функции оракл
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39491957
Pavel_PVАналитика в чистом видеДля осознания чистоты твои мозги недостаточно замусорены знаниями. Читай первый ответ.andrey_anonymousВоспользоваться group by
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39491959
Pavel_PVАналитика в чистом виде => читать про аналитические функции ораклуж если что и в чистом виде - то агрегатный first/last . Идеологически он ближе всего к постгресовскому DISTINCT ON
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39496803
ZiB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ZiB
Гость
Всем спасибо.
Нашел следующий вариант:
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 для ограничение выборки.
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39496814
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZiB,

Код: plsql
1.
2.
3.
select  max(id) id, num, 1 ver
from t
group by num



Даст такой же результат
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39496816
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZiBЖаль что нет limitТы нажмакал клавиш сожаления больше, чем различий синтаксиса между кляузами distinct on и row_number или first/last. Тем более, что приведенный тобой пример не показателен, так как соответствует банальному групповому min/max.
Мог бы сэкономленное от сожалений время потратить на чтение sql reference, тогда знал бы и про варианты limit.
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39496824
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZiB.............
Жаль что нет limit для ограничение выборки.

У Oracle есть ROWNUM, можешь почитать
WHERE ROWNUM <= number;
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39496837
ZiB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ZiB
Гость
MaximaXXL, ну мне надо саму последнюю версию суммы найти для num
просто не написал sum
...
Рейтинг: 0 / 0
select distinct on в Oracle
    #39496851
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZiB,

Если бы Вы предоставили пример:
Такой набор есть
Такие условия задачи
Такой набор хочу получить

Вы бы получили быстрее и обоснованнее удовлетворяющий Вас ответ, остальное гадание/придумывание что Вы хотели сказать/получить
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / select distinct on в Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]