按 ‘ 面试题 ’ 标签归档

一个SQL面试题

今天在JavaEye看到一个有人在讨论面试题,其中一题是这样的:

aquleo 写道
表形式如下:
Year      Salary
2000        1000
2001        2000
2002        3000
2003        4000
想得到如下形式的查询结果
Year      Salary
2000      1000
2001      3000
2002      6000
2003      10000
sql语句怎么写?

实现方法一

  1. SELECT   b.YEAR, sum(a.salary) salary
  2.     FROM tb_salary a, tb_salary b
  3.     WHERE a.YEAR <= b.YEAR
  4.     GROUP BY b.YEAR

实现方法二

  1. SELECT year ,(SELECT SUM(salary) FROM tb_salary b WHERE b.year<=a.year ) AS salary
  2.     FROM tb_salary AS a

实现方法三

  1. SELECT t.year as Year, t.salary + t.salary * 0.5 * (t.year-2000) as Salary
  2. FROM salary t

我首先想到的是第三种…看来我的SQL还得努力啊…

Page 1 of 11