人事管理系统.举例就拿一张学历表来说吧.表里记录了职工的学历变迁情况
表名:pstudy
工号 学历 取得学历时间
1 专科 1997
1 本科 2000
2 本科 2001
3 本科 1998
3 硕士 2002
我想统计目前职工中最高学历是本科的职工,怎么样把时间因素也考虑进去呢,取出同个工号的最近的那条数据?具体sql语句请高手赐教,我用mysql.
结果是2
表名:pstudy
工号 学历 取得学历时间
1 专科 1997
1 本科 2000
2 本科 2001
3 本科 1998
3 硕士 2002
我想统计目前职工中最高学历是本科的职工,怎么样把时间因素也考虑进去呢,取出同个工号的最近的那条数据?具体sql语句请高手赐教,我用mysql.
结果是2
select id,edu,min(year(now())-edutime) as t from pstudy where edu ='本科'group by edutime order by t limit 1得到
id edu t
----- ------ ----
2 本科 6
+------+------+--------------+
| 工号 | 学历 | 取得学历时间 |
+------+------+--------------+
| 2 | 本科 | 2001 |
+------+------+--------------+
1 row in set (0.02 sec)
时间是什么考虑的?
INSERT INTO #T
SELECT '1', '专科', 1997
UNION SELECT '1', '本科', 2000
UNION SELECT '2', '本科', 2001
UNION SELECT '3', '本科', 1998
UNION SELECT '3', '硕士', 2002
SELECT * FROM #TSELECT a.工号, a.学历,a.取得学历时间
FROM #T a
INNER JOIN (SELECT MAX(取得学历时间) AS 取得学历时间, 工号 FROM #T GROUP BY 工号) b ON a.工号 = b.工号 AND a.取得学历时间 = b.取得学历时间
WHERE a.学历 = '本科'
DROP TABLE #T