`
wjm901215
  • 浏览: 154273 次
  • 性别: 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 挺不错

分享到:
评论

相关推荐

    使用sql语句查询的数据按时间递增累加

    ### 二、实现时间递增累加的方法 #### 2.1 目标 目标是使用SQL语句计算出每个源ID (`ܺķ`) 在不同时期的累计预计值 (`ۼԤ`),即从最早的时间点开始到当前时间点的所有预计值之和。 #### 2.2 SQL实现 接下来,...

    SQL如何实现阶梯式累加.txt

    ### SQL实现阶梯式累加的方法 在SQL查询中实现阶梯式累加,即根据特定条件对数据进行分段累加,是一种常见的需求。本篇文章将详细介绍如何通过SQL语句实现这种累加方式,并通过具体的例子来说明其应用场景及实现...

    oracle实现阶梯式累加

    ### Oracle实现阶梯式累加...这种方法不仅简单高效,而且对于处理大规模数据集非常有用。希望本教程能帮助读者更好地理解和掌握Oracle中的窗口函数和`OVER`子句的应用技巧。在未来的工作中,这些技巧将会发挥重要作用。

    sql中循环控制 SQL中json字符串处理.txt

    sql中while循环控制,不需要获取数据到程序语言中处理。 SQL中直接进行json格式字符串处理,省掉数据库和程序直接的调用

    SQL语句实现表中字段的组合累加排序

    这种组合累加排序的方法在数据分析和报表生成中非常常见,尤其是在需要对多字段进行聚合计算和排序时。了解如何灵活运用`SELECT`, `WHERE`, `GROUP BY`, 和 `ORDER BY` 子句是SQL学习中的重要环节,也是数据库操作中...

    Spark2中使用累加器、注意点以及实现自定义累加器.docx

    这通常涉及到继承Spark提供的累加器基类并重写必要的方法。 总之,累加器在Spark中是一种非常有用的功能,能够极大地简化分布式程序中的聚合操作。了解如何正确使用累加器及其内部工作原理对于开发高性能的Spark...

    简单的sql语句集合(自己总结)

    SQL,全称Structured Query Language,是一种用于管理关系数据库的标准语言。它被广泛应用于各种数据库管理系统,如MySQL、Oracle、SQL Server等。以下是一些基础的SQL语句,适合初学者入门学习。 1. **SELECT语句*...

    sql面试题,sql练习。

    题目中的三种方法都可行,但这里主要解释第一种方法: ```sql SELECT rq, SUM(CASE WHEN shengfu = '胜' THEN 1 ELSE 0 END) AS '胜', SUM(CASE WHEN shengfu = '负' THEN 1 ELSE 0 END) AS '负' FROM #tmp ...

    SQL脚本函数 16进制转换为10进制

    通过上述分析可以看出,该SQL脚本函数`fn_HexToInt`实现了一种有效的方法,能够将任意长度不超过16位的十六进制字符串转换为其等价的十进制整数形式。这种方法不仅适用于特定的应用场景,如网络通信中的数据解析、...

    用SQL计算多次多人开工的工时分摊sql

    这种方法不仅能够准确计算每个员工的实际工作时间,还能确保整体的工时不被过度计算。此外,该方案还具有较好的扩展性和灵活性,可以根据具体需求进行调整和优化。 需要注意的是,实际应用中还需要考虑更多的因素,...

    合并多个表的sql语句

    在下载sql表中的数据时,很多数据通常不在一个表中,需要合并多个表的sql语句,这就是所需要的sql语句。

    SQL数据库.pdf

    - 这段代码声明了两个变量,一个用于存储当前数值,另一个用于累加求和,通过WHILE循环实现计算。 10. 根据分数判断等级成绩: - 使用CASE语句根据分数范围设置成绩等级。 11. 字符串操作: - LTRIM和RTRIM去除...

    C#访问SQL显示到DataGridView,同时根据DataGridView实时更新数据库

    然后,通过DataTable的`GetChanges`方法获取更改,用这些更改更新数据库: ```csharp private void dataGridView1_RowValidated(object sender, DataGridViewCellEventArgs e) { if (dataGridView1....

    SQL Server 查询两个日期之间的所有月份

    `number`是`spt_values`表中的数值,逐月累加。`+ '01'`是为了确保日期始终是每月的第一天,以便按月份正确地进行比较。 接下来,通过`WHERE`子句过滤出在这个范围内的月份,并使用`AS [Date]`重命名列名为`Date`,...

    Oracle数据库SQL培训 数据库SQL语句编写培训教程 Oracle高级查询SQL优化 集合实际案例讲解 共26页.pptx

    3. **其他优化方式**:这可能包括查询重构、减少JOIN操作、使用物化视图、考虑使用并行查询、调整会话参数等方法来提升查询性能。 总的来说,Oracle数据库SQL培训旨在帮助用户熟练掌握高级查询技术,理解并应用SQL...

    一道SQL Server面试题

    离职总人数和入职总人数可以通过累加`OutNum`和`InNum`字段的值来得到。 下面是实现这些功能的T-SQL语句: ```sql SELECT DName, MAX(CreateTime) AS LastChangeTime, SUM(CurrentNum) AS CurrentTotalNum, ...

    转车 换乘 SQL算法

    一种常见方法是使用递归查询或者自连接,找出从起点到终点的所有可能路径,并根据换乘次数、总耗时等因素筛选出最佳路线。 以下是一段简单的SQL示例,展示如何找到从A站到B站的最短路径(假设我们已经有了线路表和...

    T-SQL打印杨辉三角

    3. **数字累加**:每行的每个数字是上一行的两个相邻数字之和。因此,我们需要保留上一行的数字以便计算当前行的值。 4. **结果输出**:可以将结果存储在一个临时表或者直接在查询结果中显示。 下面是一个简单的T-...

Global site tag (gtag.js) - Google Analytics