Есть ли способ получить соответствующее значение X для минимального значения Y в данном наборе данных, в той же записи, с использованием функций Oracle Analytic и без использования подзапроса?
Например:
Если у меня есть следующий набор данных «ds1»:
Col1 Col2
A 1
B 2
C 3
D 4
E 4
A 10
Обычно, чтобы найти значение «A» в Col1, которое соответствует минимальному значению «1» в Col2, янаписал бы следующий запрос:
select ds1.col1
from ds1
, (select min (col2) col2
from ds1) min_ds1
where ds1.col2 = min_ds1.col2
/
Вот исполняемый код для такого теста:
### 1014.010, Start time is: 10/30/2019 11:39:35am
MYUN@MYDB-C1>>create table ds1 (col1 varchar2 (1), col2 number)
2 /
Table created.
Elapsed: 00:00:00.01
MYUN@MYDB-C1>>insert into ds1 (col1, col2)
2 select 'A', 1 from dual
3 union all select 'B', 2 from dual
4 union all select 'C', 3 from dual
5 union all select 'D', 4 from dual
6 union all select 'E', 4 from dual
7 union all select 'A', 10 from dual
8 /
6 rows created.
Elapsed: 00:00:00.02
MYUN@MYDB-C1>>commit
2 /
Commit complete.
Elapsed: 00:00:00.01
MYUN@MYDB-C1>>col col1 format a10
MYUN@MYDB-C1>>select ds1.col1
2 from ds1
3 , (select min (col2) col2
4 from ds1) min_ds1
5 where ds1.col2 = min_ds1.col2
6 /
COL1
----------
A
1 row selected.
Elapsed: 00:00:00.01
MYUN@MYDB-C1>>drop table ds1
2 /
Table dropped.
Elapsed: 00:00:00.03
The time now: 10/30/2019 11:39:36am
Мой вопрос:
Можно ли получитьзначение «A» с использованием аналитической функции и без подзапроса? Я знаю, что могу использовать аналитическую функцию "ROW_NUMBER", отсортировать результат в предложении ORDER BY, все в подзапросе, а затем добавить предложение WHERE во внешний запрос, где я говорю что-то вроде "WHERE RN = 1", где "RN "- это псевдоним столбца в подзапросе, где используется функция ROW_NUMBER.