Максимальное значение Oracle SQL

у меня есть требование, мне нужно найти максимум только один val из каждого отдела, мне нужно только одно значение, даже 2 человека имеют одинаковое максимальное значение

drop table tst;
create table tst(val number,dept varchar2(20),name varchar2(10));
insert into tst values(1,'tamil','john');
insert into tst values(2,'tamil','krish');
insert into tst values(3,'maths','vijay');
insert into tst values(4,'maths','raja');
insert into tst values(4,'maths','vinay');

select * from tst;
VAL  DEPT   NAME
1   tamil   john
2   tamil   krish
3   maths   vijay
4   maths   raja
4   maths   vinay

когда я пытался найти максимальное значение, я получил 2 значения для отдела математики

select * from tst t1
where t1.val= (select max(val) from tst t2 where t2.dept=t1.dept
              group by dept);

2 тамильский криш
4 математический раджа
4 математики вина

я хочу либо

2 тамильский криш
4 математики вина

или

2 тамильский криш
4 математический раджа

как добиться этого ионного оракула sql

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать ROW_NUMBER следующим образом:

SELECT * FROM
(SELECT T.*, ROW_NUMBER(OVER PARTITION BY DEPT ORDER BY VAL DESC) AS RN
   FROM TST T)
WHERE RN = 1

Один из способов — добавить name в агрегатную функцию.

select max(VAL) val, dept, max(name) name
from tst
group by dept

Другие вопросы по теме