====================Question=========================
jmbdat dayt y mon
27-9月 -07 2033.2 2007 200709
28-9月 -07 2750.28 2007 200709
29-9月 -07 2885.68 2007 200709
30-9月 -07 2556.68 2007 200709
01-10月-07 2903.04 2007 200710
02-10月-07 1002.96 2007 200710
03-10月-07 1038.24 2007 200710
对上边的表用sql处理下 变成下面的
jmbdat dayt y mon mont
27-9月 -07 2033.2 2007 200709 2033.2
28-9月 -07 2750.28 2007 200709 4783.28
29-9月 -07 2885.68 2007 200709 7669.16
30-9月 -07 2556.68 2007 200709 20225.84
01-10月-07 2903.04 2007 200710 2903.04
02-10月-07 1002.96 2007 200710 3906
03-10月-07 1038.24 2007 200710 4944.24
该怎么做啊?
==================Solution=========================
SQL:
select tt.*,
sum(tt.dayt) over (partition by tt.mon order by tt.jmbdat,tt.y,tt.mon) as sum_dayt
from tablename tt;
Result :
JMBDAT DAYT Y MON SUM_DAYT
----------- ---------- ---------- ------ ----------
2007-9-27 2033.2 2007 200709 2033.2
2007-9-28 2750.28 2007 200709 4783.48
2007-9-29 2885.68 2007 200709 7669.16
2007-9-30 2556.68 2007 200709 10225.84
2007-10-1 2903.04 2007 200710 2903.04
2007-10-2 1002.96 2007 200710 3906
2007-10-7 1038.24 2007 200710 4944.24
7 rows selected
分享到:
相关推荐
在Oracle数据库中,实现阶梯式累加主要依赖于`OVER`子句和窗口函数。其中,`SUM()`函数结合`OVER`子句可以非常方便地完成这类操作。具体步骤如下: 1. **创建表**:首先需要创建一张包含所需字段的表。 2. **插入...
SUM函数用于求和,同样有聚合和分析两种形式。聚合函数按组求和,而分析函数则在分组内或按指定顺序进行累加。 3. COUNT({* | [DISTINCT | ALL] expr}) OVER (analytic_clause) COUNT函数用于计算行数,可以计数...
Oracle数据库中的常用函数是数据库管理员和开发人员在处理数据时不可或缺的工具。这些函数极大地提高了数据处理的效率和灵活性。以下是一些常见的Oracle分析函数及其用法: 1. **开窗函数(Over)**: 开窗函数允许...
Oracle 分析函数是数据库查询中的强大工具,它们允许在单个SQL语句中对结果集进行复杂的计算和分组操作,极大地简化了数据分析的过程。在Oracle 8i版本之后引入,分析函数为处理大量数据提供了高效的方法,避免了...
### Oracle分析函数OVER及开窗函数详解 #### 一、概述 在Oracle数据库中,分析函数(Analytic Functions)是一种非常强大的工具,用于处理复杂的查询需求。这些函数可以在一组相关的行上执行计算,并且每行返回一个...
### Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数详解 #### 一、OVER (PARTITION BY ..) 概述 在Oracle数据库中,`OVER (PARTITION BY ...)` 是一种非常强大的功能,它允许用户在数据集上进行窗口操作。这在...
- **SUM() OVER()**:窗口函数,用于计算分组内的累计值,如示例中的逐行累加。 - **INSTR**:返回子字符串在主字符串中的位置,用于查找字符或子串的位置。 7. **表空间管理**: - 查询表空间信息: ``` ...
`SUM`函数负责将相同学生下不同科目的成绩累加起来。 #### 二、使用PL/SQL过程实现行转列 ##### 1. 实现思路 除了使用SQL语句外,还可以通过编写PL/SQL过程来实现行转列的操作。这种方法更加灵活,可以处理更复杂...
- 示例:`SUM(salary) OVER (PARTITION BY department ORDER BY hire_date)`,此表达式将在每个部门内部按照雇员的入职日期顺序对薪资进行累加。 3. **报表(Reporting)函数**:这些函数与开窗函数类似,但它们...
从Oracle 8.1.6版本开始引入,分析函数的主要功能是在聚合数据的同时保留原始数据的行细节,这与传统的聚合函数(如SUM、AVG、MAX等)有所不同。这些函数在处理分组数据时,能够为每个分组返回多行结果,而不是仅仅...
Oracle的分析函数row_number() over()是数据库查询中一种强大的工具,它用于对数据集进行分组和排序,尤其在处理重复数据或者实现排名时非常有用。在Oracle SQL中,row_number()函数会为每一行生成一个唯一的数字,...
在Oracle数据库中,分析函数是一类非常强大的工具,它们能够实现复杂的窗口计算,例如排名、累计总和等。与聚合函数(如`SUM`、`AVG`)不同的是,分析函数不仅能够对一组行进行计算,还能返回针对每行的计算结果。...
这里,我们使用了 SUM 函数来累加 CASE 语句返回的值。当 `sex` 的值为 1 或 2 时,CASE 语句返回 1,否则返回 0。最终 SUM 函数会计算出对应类别的总人数。 通过以上案例,我们可以看到 CASE 语句在 Oracle 中的...
这将分别计算出男性和女性的人数,通过将非匹配的性别设为0,然后使用SUM函数累加匹配的计数。 DECODE函数的另一个用途是进行简单的逻辑转换,例如将特定值转换为其他值。比如,如果dir列的值是1,你想要将其转换为...
当待转换的列是固定的时,可以采用`SUM`函数配合`DECODE`函数的方法来实现行转列。 **示例代码:** ```sql SELECT name, SUM(DECODE(km, '语文', cj, 0)) AS "语文", SUM(DECODE(km, '数学', cj, 0)) AS "数学",...
在Oracle数据库中,OVER函数是一个非常强大的工具,主要用于实现复杂的窗口函数操作。它可以帮助我们对数据进行分组、排序、累计等多种处理,大大增强了SQL语言的数据分析能力。本文将详细介绍OVER函数的基本用法...
通过`SUM`函数结合`CASE`或`DECODE`函数,可以针对特定条件进行数值的累加,并将其结果展示为不同的列。 ### 二、案例分析 在给定的代码片段中,可以看出一个典型的行转列实现方式: ```sql SELECT a.bmbm_pk, ...
- 使用`decode`函数和`SUM`函数组合实现行转列,其中`decode`函数用于根据科目(`SUBJECT`)判断并返回相应的成绩(`SCORE`),`SUM`函数用于累加相同学生的同一科目成绩。 #### 3. **SQL示例代码** ```sql SELECT id,...
Oracle 中的 row_number()over 函数是一个分析函数,用于生成一个连续的数字序列,可以根据某个列或多个列对数据进行分区和排序,然后生成一个唯一的序号。 row_number()over 函数的基本语法为: ``` row_number()...
下面,我们将详细解析如何在Oracle SQL中实现行列转换,并通过具体示例来加深理解。 ### Oracle SQL中的行列转换方法 #### 1. 使用CASE语句 CASE语句是Oracle SQL中实现条件判断的一种方式,它可以根据不同的条件...