oracle分组后取出根据某列分组后的最大值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle分组后取出根据某列分组后的最大值相关的知识,希望对你有一定的参考价值。

有三列数据,单位 产品类别 和金额 产品类别是多个,现在我需要分单位取出金额最大的产品类别怎么取
比如
北京
桌子
1000

北京
凳子
500

北京
桌子
800

上海
凳子
900

上海
凳子
700

上海
桌子
1500

西安
凳子
400

西安
桌子
900
我想要得到这样的结果
北京
桌子
1800

上海
凳子
1600

西安
桌子
900
这样该怎么写

参考技术A 你好,你直接sum金额,然后按照地区和商品类型分类就可以了。
select sum(amt),priv,object from tablename group by object,priv;追问

不行的,sum之后还有取最大值

追答

你看他是先求和的,之后你用个max(amt);这个函数就能找到最大值了,后面还可以跟where语句,

追问

我是想看看有木有用一个函数什么的能实现,你说的这种我自己写了,两层再加一层比较,感觉比较麻烦。

追答

这个貌似好没有呢。

Oracle分组查询取每组排序后的前N条记录

项目中用到Oracle分组查询取每组排序后的前N条记录,group by 只能返回每个组的单条统计。所以用OVER(PARTITION BY)函数,具体详见baidu.com

建个测试表test_abc,如图:

 要求查询出按B字段进行分组,每组取C值最大的前3位。
查询sql为 :
select * from (
SELECT b,c,row_number() OVER(PARTITION BY b ORDER BY c desc) e FROM test_abc) t where e <= 3

查询结果截图:

 

记录完毕!

————————————————
版权声明:本文为CSDN博主「wangchsh2008」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wangchsh2008/article/details/53419991

以上是关于oracle分组后取出根据某列分组后的最大值的主要内容,如果未能解决你的问题,请参考以下文章

如何从数据库(oracle,mysql)中取出根据ID分组后,时间最大的数据

SQL(oracle) 取得分组后最大值记录

oracle开展分组后,取出每组的前几条数据

sql语言 怎么求每组最大,就是用group by 分组后,求每组某列最大?

oracle分组后的整条记录怎么取

请教一个sql(按2个字段分组然后从每组取出最大的一条纪录,再根据一个标记为判断是不是取出该值)