首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >oracle sql max值

oracle sql max值
EN

Stack Overflow用户
提问于 2020-12-11 05:49:52
回答 2查看 49关注 0票数 0

我有一个要求,我需要从每个部门找到最多一个val,我只需要一个值,甚至有两个人有相同的最大值。

代码语言:javascript
运行
复制
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个值。

代码语言:javascript
运行
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-11 05:52:26

您可以按以下方式使用ROW_NUMBER

代码语言:javascript
运行
复制
SELECT * FROM
(SELECT T.*, ROW_NUMBER(OVER PARTITION BY DEPT ORDER BY VAL DESC) AS RN
   FROM TST T)
WHERE RN = 1
票数 1
EN

Stack Overflow用户

发布于 2020-12-11 05:55:34

一种方法是将name也添加到聚合函数中。

代码语言:javascript
运行
复制
select max(VAL) val, dept, max(name) name
from tst
group by dept
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65246373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档