今天看到一篇帖子中有这样一个题目
表形式如下:
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 挺不错
累加sql的书写
原创
©著作权归作者所有:来自51CTO博客作者abcdeaaa的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:学习 SQLite 数据库
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
要养成良好的书写SQL的习惯
的对大家有帮助。 要知道sql语句,我想...
数据库 大数据 c# 子查询 字段