数据库查询问题
数据表如下:
name id city date
王一 01 北京 2011-01-01
王二 02 上海 2011-01-05
王三 03 广州 2011-01-15
王四 04 纽约 2011-01-07
王五 05 东京 2011-01-03
王一 01 上海 2011-10-01
王二 02 广州 2011-10-01
这是一张员工表,在修改员工信息时,不是改记录而是新插入一条记录,id确定一个员工,date为创建记录时间。查询某个人员信息时要查询创建时间最晚的一条。
现在我想查出每个城市的员工人数,某个员工所在城市以时间最晚记录中的城市为准,怎么查?
城市 人数
xxx xxx
xxx xxx
[解决办法]
建议分两张表,一张员工表,一张员工信息变动记录表。。。
像你这样的话,如果我插入三条记录:
王二 02 广州 2011-10-01
王二 02 北京 2011-10-01
王二 02 上海 2011-10-01
王二所在城市以哪个为准?
只有保证一个员工同一日期只有一条记录,你的查询才有意义:
Select City, Count(Id) Count From (Select a.Id, a.City From Tab a, (Select Id, Max(Cdate) Cdate From Tab Group By Id) b Where a.Id = b.Id And a.cdate=b.cdate ) Group By City
[解决办法]
group by + having 条件就行
不用子查询