一、问题

如果一张表中有n个数据,分别属于a个小组,现在我们要求每个组里某个【字段】的最大值,最小值,和,差等聚合函数,该怎么操作?
举个具体点的例子,有一个表名为demo的oracle数据库表,有字段如ID【id】,名字【name】,年龄【age】,国家【country】4个字段,我们要求不同的国家,最大年纪的人的信息;
demo表的建表语句如下:

create table DEMO(
id varchar2(10) primary key not null,
name varchar2(10),
age varchar2(10),
country varchar2(10)
)

insert into demo(‘1’,‘刘备’,‘45’,‘蜀’);
insert into demo(‘2’,‘关羽’,‘42’,‘蜀’);
insert into demo(‘3’,‘张飞’,‘40’,‘蜀’);
insert into demo(‘4’,‘曹操’,‘47’,‘魏’);
insert into demo(‘5’,‘孙权’,‘21’,‘吴’);
insert into demo(‘6’,‘周瑜’,‘24’,‘吴’);

二、解决方法

我们先将所有记录按国家分组,倒序排序并标注序号值:
1.首先根据country分组,然后每组按照age字段倒叙排列,然后Rank()函数会将所有满足条件的记录排序;

select d.* ,Rank()Over(partition by d.country order by d.age desc) mm from demo d;

这样执行的结果就是这样:

这里的mm就是我们rank()函数排序后的序号;接下来,我们把mm等于1的值拿出来,就是各个国家年纪最大的值得记录:

select * from (
select d.*,rank()over(partition by d.country order by d.age desc) mm
from demo d
)
where mm=1;

这样,就能获得年纪最大的记录的信息:

三、分析

如果我们用max+group by并且不适用over()函数来操作,那么可以实现么?
本文举的例子是可以实现的,但是如果遇到其他情况,可能会更复杂;用over()函数会更好一些;

【Oracle】Over函数的用法相关推荐

  1. Oracle trunc()函数的用法

    --Oracle trunc()函数的用法 /**************日期********************/ 1.select trunc(sysdate) from dual  --20 ...

  2. oracle 获得月最后一天,oracle获取本月第一天和最后一天及Oracle trunc()函数的用法...

    select to_char(trunc(add_months(last_day(sysdate), -1) + 1), 'yyyy-mm-dd') "本月第一天", to_cha ...

  3. oracle查询本月第一天_oracle获取本月第一天和最后一天及Oracle trunc()函数的用法...

    select to_char(trunc(add_months(last_day(sysdate), -1) + 1), 'yyyy-mm-dd') "本月第一天",  to_ch ...

  4. Oracle to_date()函数的用法

    在Oracle数据库中,Oracle to_date()函数是我们经常使用的函数,下面就为您详细介绍Oracle to_date()函数的用法 to_date()与24小时制表示法及mm分钟的显示: ...

  5. Oracle to_char()函数的用法

    Comments - 446 Oracle to_char()函数的用法 The following are number examples for the to_char function. to_ ...

  6. oracle trunc q,Oracle trunc()函数的用法

    /**************日期  TRUNC()函数没有秒的精确********************/ select sysdate from dual --当时日期 select trunc ...

  7. 四舍五入oracle,Oracle trunc()函数的用法及四舍五入 round函数

    --Oracle trunc()函数的用法 /**************日期********************/ 1.select trunc(sysdate) from dual --201 ...

  8. oracle decode函数什么意思,oracle decode函数的用法

    oracle decode函数,不管查询的结果是否满足'PRIMARY',参数中的select语句还是会执行的,通过查看执行计划就知道 set autotrace traceonly select d ...

  9. Oracle NVL函数的用法

    今天研究了一下数据库中的过程,发现用到NVL这个函数,我记忆力不好,之前用过,长期不用又忘了.于是去查看了下官方的用法解释: http://docs.oracle.com/cd/E11882_01/s ...

  10. Oracle translate 函数的用法, 以及和replace的区别

    translate 是用来替换字符的函数 语法:  translate(char, from_str,to_str)   其中,char是待处理的字符串. from_str是按顺序排列若干个要被替换的 ...

最新文章

  1. 某网友发表如此言论:程序员基本都是diao丝,是农村进城务工人员!有资源有关系的都不干程序员!...
  2. 以太坊 智能合约 简介
  3. java窗体设置最小宽度_flex web Application设置最小高度和宽度。
  4. char与byte的区别
  5. MIPI参数配置解释
  6. run在java_Java语言start和run方法的区别
  7. mac中apache服务器及虚拟主机配置
  8. python绘制散点图的函数_python matplotlib更新函数的散点图
  9. html清除图片缓存
  10. jeecg-framework-3.3.2-RELEASE 最新版本发布
  11. 数据结构与算法——二叉树与图汇总整理
  12. chrome扩展推荐:此刻、今天、最近~一个关于时间管理的扩展 - Momentum
  13. 【干货】前端开发者最常用的六款IDE
  14. [渝粤教育] 西南科技大学 中国古代文学〔2〕 在线考试复习资料
  15. oracle 产品宣传片,史上最牛宣传片!河南的美已惊艳了世界!
  16. 将指定小程序页面设置为首页的两种方式
  17. “决策树”——数据挖掘、数据分析
  18. 基于K8S的容器化PaaS平台建设
  19. 介绍一个开源博客项目并部署到Nginx服务器
  20. html虚线垂直居中,css-虚线边框滚动效果

热门文章

  1. 一名七年老安卓的一二月小结
  2. 如何解决批量上传太多文件导致浏览器挂掉的问题(已解决)
  3. 2022跨境出海:中东地区网红营销现状及特点
  4. 线特征---LBD算法(三)
  5. 02-mongodb基本命令操作
  6. java中文乱码 寮犱笁_服务调用参数为中文时出现乱码,如何解决?
  7. SIGQUIT/SIGTERM/SIGINT/SIGKILL四种信号的区别
  8. 如何写好数学建模论文
  9. csust第六次周赛题解全集
  10. 完美韵脚----让押韵变得简单