今天看到一篇帖子中有这样一个题目
表形式如下:
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语句将查询的数据中的值按时间递增累加
SQL如何实现阶梯式累加
sql中while循环控制,不需要获取数据到程序语言中处理。 SQL中直接进行json格式字符串处理,省掉数据库和程序直接的调用
本文分享SQL语句实现表中字段的组合累加排序的实例代码,希望能给大家做一个参考。
FPGA 累加器FPGA 累加器FPGA 累加器FPGA 累加器FPGA 累加器FPGA 累加器FPGA 累加器FPGA 累加器FPGA 累加器FPGA 累加器FPGA 累加器
本人自己总结的sql简单语句。相信能给初学sql的人带来实处。
一种基于FPGA的乘累加器的设计,乘累加器是一种电子电路中经常用到的电路模块。
此程序使用verilog编写的累加器,已经通过仿真验证。
计算机组成原理累加器实验报告.pdf计算机组成原理累加器实验报告.pdf计算机组成原理累加器实验报告.pdf计算机组成原理累加器实验报告.pdf计算机组成原理累加器实验报告.pdf计算机组成原理累加器实验报告.pdf计算机...
利用oracle特有的方法实现oracle实现阶梯式累加
28-999累加(51单片机C语言实例Proteus仿真和代码)28-999累加(51单片机C语言实例Proteus仿真和代码)28-999累加(51单片机C语言实例Proteus仿真和代码)28-999累加(51单片机C语言实例Proteus仿真和代码)28-999累加(51...
这是一款基于labveiw的累加求和的简易实现
在下载sql表中的数据时,很多数据通常不在一个表中,需要合并多个表的sql语句,这就是所需要的sql语句。
累加校验和CRC16校验计算器,对输入控制的不好,重新输入建议清空后重新输入
26-9累加(51单片机C语言实例Proteus仿真和代码)26-9累加(51单片机C语言实例Proteus仿真和代码)26-9累加(51单片机C语言实例Proteus仿真和代码)26-9累加(51单片机C语言实例Proteus仿真和代码)26-9累加(51单片机C语言...
颜色累加直方图,很好的程序块来下载吧!
quartus ii 四位累加器原理图完整工程
数字系统设计实验报告计数器、累加器.docx数字系统设计实验报告计数器、累加器.docx数字系统设计实验报告计数器、累加器.docx数字系统设计实验报告计数器、累加器.docx数字系统设计实验报告计数器、累加器.docx数字...