怎样用sql语句进行统计

来源:百度知道 编辑:UC知道 时间:2024/05/09 03:36:14
人事管理系统.举例就拿一张学历表来说吧.表里记录了职工的学历变迁情况

表名:pstudy

工号 学历 取得学历时间

1 专科 1997

1 本科 2000

2 本科 2001

3 本科 1998

3 硕士 2002

我想统计目前职工中最高学历是本科的职工,怎么样把时间因素也考虑进去呢,取出同个工号的最近的那条数据?具体sql语句请高手赐教,我用mysql.
结果是2

补充:
下面的SQL我测试了,已经可以了,刚才没有测试,呵呵。

a和b是别名,就是代号
比如:pstudy a,
那么用a就可以代替pstudy ,不用敲那么多字母了。
而:
(select 工号,max(取得学历时间) from pstudy group by 工号) b
是把括号里的SQL当成一个虚拟表,表名叫b

建议你有空多学习一个SQL,这是最基本的知识。

明白你的意思了,下面就是了:
select a.工号, a.学历, a.取得学历时间 from pstudy a,
(select 工号,max(取得学历时间) as t1 from pstudy group by 工号) b
where a.工号=b.工号 and a.取得学历时间=b.t1 and a.学历='本科'

或者:
select a.工号, a.学历, a.取得学历时间 from pstudy a,
(select 工号,max(取得学历时间) as t1 from pstudy where 学历='本科' group by 工号) b
where a.工号=b.工号 and a.取得学历时间=b.t1

穷啊,赚点分

非常感谢ThinkIBM的耐心回答,但我还是没能运行成功.能不能不用那么复杂的虚拟表呢,简单就好!

select a.工号, a.学历, a.取得学历时间 from pstudy a where a.取得学历时间 in
(select max (取得学历时间) from pstudy where a.学历='本科' )
看这样行不?

select a.工号, a.学历, a.取得学历时间
from pstudy a
where a.取得学历时间=(select max (b.取得学历时间) from pstudy b where b.学历='本科' and b.工号=a.工号 );