一个SQL面试题
- 2009年03月20日
今天在JavaEye看到一个有人在讨论面试题,其中一题是这样的:
aquleo 写道表形式如下:
Year Salary
2000 1000
2001 2000
2002 3000
2003 4000
想得到如下形式的查询结果
Year Salary
2000 1000
2001 3000
2002 6000
2003 10000
sql语句怎么写?
实现方法一
- SELECT b.YEAR, sum(a.salary) salary
- FROM tb_salary a, tb_salary b
- WHERE a.YEAR <= b.YEAR
- GROUP BY b.YEAR
实现方法二
- SELECT year ,(SELECT SUM(salary) FROM tb_salary b WHERE b.year<=a.year ) AS salary
- FROM tb_salary AS a
实现方法三
- SELECT t.year as Year, t.salary + t.salary * 0.5 * (t.year-2000) as Salary
- FROM salary t
我首先想到的是第三种…看来我的SQL还得努力啊…