oracle分组后取出根据某列分组后的最大值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle分组后取出根据某列分组后的最大值相关的知识,希望对你有一定的参考价值。
有三列数据,单位 产品类别 和金额 产品类别是多个,现在我需要分单位取出金额最大的产品类别怎么取
比如
北京
桌子
1000
北京
凳子
500
北京
桌子
800
上海
凳子
900
上海
凳子
700
上海
桌子
1500
西安
凳子
400
西安
桌子
900
我想要得到这样的结果
北京
桌子
1800
上海
凳子
1600
西安
桌子
900
这样该怎么写
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分组后,时间最大的数据