oracle如何取分组最大值记录
来源:互联网 发布:区和欧 知乎 编辑:程序博客网 时间:2024/05/01 14:39
序号 名称 数量
1 A 20
2 A 10
1 B 20
2 B 40
3 B 10
1 C 20
2 C 40
select * from 表 where (序号,名称) in (select max(序号),名称 from 表 group by 名称)
分析函数:
select 序号 , 名称 , 数量 from
(select 序号 , 名称 , 数量
,row_number() over(partition by 名称 order by 序号 desc ) rn
form tab_name )
where rn=1
或
select 序号 , 名称 , 数量 from
(select 序号 , 名称 , 数量
, max(序号) over(partition by 名称) rn
form tab_name )
where rn=序号
注意:max的字段只能是number类型字段,如果是date类型的,会提示错误。date类型用上面的row_number()来做就可以了。
1 1
2 1
3 1
4 2
5 2
6 3
7 3
8 3
取出
id apply_id
3 1
5 2
8 3
select alx_a.id
from
(select id,apply_id,rownum rid from 表) alx_a,
(select id,apply_id,rownum rid from 表) alx_b
where alx_a.apply_id = alx_b.apply_id and alx_a.id <= alx_b.id
group by alx_a.id,alx_a.apply_id
having count(*) = 1
分组并取每组中的前n条记录
在oracle中有一数据表exam_result(成绩记录表),
表中的一条记录描述了“某个班某个学生某次考试的成绩"
create table EXAM_RESULT
(
ID NUMBER(10) not null, --主键
CLASSID NUMBER(10) not null, -- 班级id,关联到班级表
USERID NUMBER(10) not null, --用户id,关联到用户表
EXAMID NUMBER(10) not null, --试卷id,关联到试卷表
RESULT NUMBER(3) --成绩
)
现在要求统计完成了试卷id为1,2,3的成绩的前3名
即完成了试卷id为1的前3名,完成了试卷id为2的前3名,完成了试卷id为3的前3名
select
e.classid,
e.userid,
e.examid,
e.result,
row_number() over (partition by e.examid order by e.examid, e.result desc) rn
from exam_result e
where e.examid in (1,2,3)
) where rn <= 3
- oracle如何取分组最大值记录
- Mysql按字段分组取最大值记录
- Mysql按字段分组取最大值记录
- Mysql按字段分组取最大值记录
- T-SQL取分组最大值记录
- Mysql按字段分组取最大值记录
- Mysql按字段分组取最大值记录
- Mysql按字段分组取最大值记录
- oracle中分组排序并取最大值
- SQL(oracle) 取得分组后最大值记录
- SQL(oracle) 取得分组后最大值记录
- 数据分组取最大值行
- linq 分组取各组最大值
- MySql按一个字段分组并且取另一个字段最大值的记录
- oracle小记1--分组 排序 取最新时间记录
- Oracle数据分组后取每组的一条记录
- 分组查询取最大时间记录的方法Oracle
- 分组查询取最大时间记录的方法Oracle .
- Animation动画
- 1091. Acute Stroke (30)
- javascript数组操作
- 浅谈MySql的存储引擎(表类型)
- 容斥原理小结
- oracle如何取分组最大值记录
- 重拾博客
- 设计模式的六大原则
- Python问题汇总
- Javascript:谈谈JS的全局变量跟局部变量
- 递归与非递归的转变
- CentOS安装heartbeat并配置
- Android,activity托管fragment的方式
- Linux磁盘分区与格式化