加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – 在每个分区的列中查找最大值

发布时间:2021-01-26 05:01:56 所属栏目:站长百科 来源:网络整理
导读:我有表布局,如: CREATE TABLE new_test( col1 NUMBER(2) NOT NULL,col2 VARCHAR2(50) NOT NULL,col3 VARCHAR2(50) NOT NULL,col4 VARCHAR2(50) NOT NULL); 它稀有据: col1 col2 col3 col40 A B X1 A B Y2 A B Z1 C D L3 C D M 我必要找到col4的值,它对col2

我有表布局,如:

CREATE TABLE new_test
( col1 NUMBER(2) NOT NULL,col2 VARCHAR2(50) NOT NULL,col3 VARCHAR2(50) NOT NULL,col4 VARCHAR2(50) NOT NULL
);

它稀有据:

col1    col2    col3    col4
0         A      B       X
1         A      B       Y
2         A      B       Z
1         C      D       L
3         C      D       M

我必要找到col4的值,它对col2和col3的组合具有最大值.譬喻我的功效应该是:

col4
  Z
  M

我实行行使oracle说明函数:

SELECT col4,MAX(col1) OVER (PARTITION BY col2,col3) FROM (
SELECT col2,col3,col4,col1 
FROM new_test);

但它没有按预期事变.你能帮我办理这个题目吗?

更新:
我可以行使它:

SELECT a.col4
FROM new_test a,(SELECT col2,col3) AS col1
  FROM new_test
  ) b
WHERE a.col2 = b.col2
AND a.col3   = b.col3
AND a.col4   = b.col4
AND a.col1   = b.col1;

尚有比这更好的要领吗?

办理要领

假如您祈望获得功效:

col4
  Z
  M

你应该写:

SELECT MAX(col4) AS col4 FROM new_test GROUP BY col2,col3

这将返回每列col2 col3在col4列中找到的最大值

假如你必要:

COL2    COL3    COL4
A       B       Z
C       D       M

写:

SELECT col2,MAX(col4) AS col4 FROM new_test GROUP BY col2,col3

最后,假如您必要:

COL1    COL2    COL3    COL4
2       A       B       Z
3       C       D       M

有许多变革.像这个:

SELECT col1,col2,col4 
  FROM new_test
  NATURAL JOIN (SELECT col2,MAX(col4) AS col4 
                  FROM new_test GROUP BY col2,col3)

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读