我有一个要求,我需要从每个部门找到最多一个val,我只需要一个值,甚至有两个人有相同的最大值。
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数学raja
4数学维奈
我也想要
2泰米尔克里什
4数学维奈
或
2泰米尔克里什
4数学raja
如何实现此离子oracle sql
发布于 2020-12-11 05:52:26
您可以按以下方式使用ROW_NUMBER
:
SELECT * FROM
(SELECT T.*, ROW_NUMBER(OVER PARTITION BY DEPT ORDER BY VAL DESC) AS RN
FROM TST T)
WHERE RN = 1
发布于 2020-12-11 05:55:34
一种方法是将name
也添加到聚合函数中。
select max(VAL) val, dept, max(name) name
from tst
group by dept
https://stackoverflow.com/questions/65246373
复制相似问题