mysql和oracle数据库分组查询前N条数据,最大值和最小值

本文介绍了如何在MySQL和Oracle数据库中,针对分组数据查询每个组的最大值、最小值,以及如何获取每个组的前N条记录。提供了多种查询方法,包括子查询、exists子句和窗口函数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们创建一个表tb然后插入数据
create table tb(name varchar(10),val int,memo varchar(20))
insert into tb values(‘a’, 2, ‘a2’)
insert into tb values(‘a’, 1, ‘a1’)
insert into tb values(‘a’, 3, ‘a3’)
insert into tb values(‘b’, 1, ‘b1’)
insert into tb values(‘b’, 3, ‘b3’)
insert into tb values(‘b’, 2, ‘b2’)
insert into tb values(‘b’, 4, ‘b4’)
insert into tb values(‘b’, 5, ‘b5’)

mysql数据库
A.按name分组查询val最大值和最小值
1.取最大值
第一种方法
select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name
第二种方法
select a.* from tb a where not exists(select 1 from tb where name = a.name and val > a.val)
第三种方法
select a.* from tb a,(select name,max(val) val from tb group by name) b where a.name = b.name and a.val = b.val order by a.name
第四种方法
select a.* from tb a inner join (select name , max(val) val from tb group by

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值