首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > IBM DB2 >

查询group分组内第一条数据的有关问题

2012-03-09 
查询group分组内第一条数据的问题假设有个人员表 :agentNo(编号,主键)age(年龄)name(名字)gender(性别)现

查询group分组内第一条数据的问题
假设有个人员表 :
  agentNo(编号,主键) age(年龄) name(名字) gender(性别)

现在我要做这样的查询:
  按年龄分组,每一个分组里面的第一个人的所有信息  
  分组里面数据的顺序是order by name desc

select a.* 
from agent a,
(select max(agentNo) as agentNo from agent group by age) b
where a.agentNo = b.agentNo

这个是查询每一个分组里面编号最大的人的所有信息 但是后来发现不应该这样做,而是要
“每一个分组里面的第一个人的所有信息” 
我现在想到一个方法,先把agent order by age,name desc 然后再把查询结果用group by 分组

但是后面那种想法有不明白的地方了,我先排好序,再group by 一分组,估计之前的顺序又打乱了,总之这写法蛋疼
我想问问有没有一步到位,不需要子查询的写法?

[解决办法]
不用子查询估计不行。

参考下贴中的多种方法,不是DB2的,可以借鉴一下思路。

http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
[征集]分组取最大N条记录方法征集,及散分....
[解决办法]
如果你一定要用3楼的代码
select a.*
from agent a,
(
select a.* from agent a inner join 
(select age,max(name)as ma from agent group by age ) b
on a.age=b.age and a.name=b.ma) c
where a.agentNo = c.agentNo
[解决办法]
or
select a.*
from agent a,
(select agentNo as agentNo from agent c where 
name=(select max(name) from agent where c.age=age)
) b
where a.agentNo = b.agentNo

热点排行