`
超级板凳
  • 浏览: 93494 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

累加sql的书写

阅读更多
今天看到一篇帖子中有这样一个题目
表形式如下:
Year      Salary
2000        1000
2001        2000
2002        3000
2003        4000
想得到如下形式的查询结果
Year      Salary
2000      1000
2001      3000
2002      6000
2003      10000
sql语句怎么写?
题目是要对salary列进行一个逐年的累加.
经过分析可以做如下处理  表名为 yearSalary

写法一:select a.year year, sum(b.d) salary from yearSalary a, (select a.year,sum(a.salary) d from a Group by year) b where a.year>b.year group by a.year

写法二:select a.years years,(select sum(salary) from salary b where b.years<=a.years) sumSalary from salary a
sql结构分析:将问题分解,首先应该得到累加的结果,然后再排序;首先求累加,累加的约束条件是比当前记录中年份小的进行累加,那么可以用select sum(salary) from salary b where b.years<=a.years,a当然是指嵌套在外面的表了,类似递归的意味.这一步做完后其实工作已经做完了
感觉写法二很简约,不过了写法一更规范更易懂.
刚看到一个写法三 SELECT   b.years, SUM (a.salary) salary FROM salary a, salary b  WHERE a.years <= b.years GROUP BY b.years 挺不错
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics