新建一张学生表
CREATE TABLE T_STU(
ID NUMBER(38) PRIMARY KEY,
NAME VARCHAR2(20),
GENDER NUMBER(1),
GRADE NUMBER(4)
);
插入数据
insert into t_stu values(1,'朱',1,100);
insert into t_stu values(2,'张',0,98);
insert into t_stu values(3,'高',1,95);
insert into t_stu values(4,'林',1,95);
insert into t_stu values(5,'刘',1,94);
insert into t_stu values(6,'胡',0,97);
insert into t_stu values(7,'陈',0,97);
insert into t_stu values(8,'易',0,92);
求和的时候使用over
select t.* , sum(t.grade) over(partition by gender ) d from t_stu t
sum(GRADE ) over (partition by id order by gender) 性别连续求和,--各性别的成绩"连续"求和
sum(GRADE ) over (partition by GENDER ) 性别总和, -- 别统计的总和,同一性别总和不变
sum(GRADE ) over (order by id) 连续求和, --所有别的乘积"连续"求和
sum(GRADE ) over () 所有员工的薪水总和
求不同性别的排名:
SELECT s.*,
DENSE_RANK() OVER(PARTITION BY s.gender ORDER BY s.grade DESC) dro
FROM t_stu s
其中 DENSE_RANK()与rank()相反,只做名次的累加,不做跳跃。
rank()则是跳跃求和,比如有并列,则下一名次+2
分享到:
相关推荐
### Oracle分析函数OVER及开窗函数详解 #### 一、概述 在Oracle数据库中,分析函数(Analytic Functions)是一种非常强大的工具,用于处理复杂的查询需求。这些函数可以在一组相关的行上执行计算,并且每行返回一个...
`OVER`函数是Oracle开窗函数的核心组成部分,它定义了一个计算上下文或窗口,在这个窗口内可以执行各种类型的聚合计算。`OVER`函数的基本语法如下: ``` function_name(...) OVER (window_specification) ``` 其中...
### Oracle分析函数及开窗函数详解 #### 一、Oracle分析函数概述 Oracle自8.1.6版本开始引入了分析函数,这类函数主要用于计算基于组的聚合值,并且与传统的聚合函数不同的是,分析函数可以针对每个组返回多行结果...
### Oracle的分析函数OVER及开窗函数 #### 一、分析函数OVER ##### 1. 概念介绍 从Oracle 8.1.6版本开始,Oracle引入了分析函数,这些函数可以对分组的数据执行复杂的操作,如计算累积总和、排名等。与聚合函数...
- **制表(reporting)函数**:与开窗函数同名,但作用于一个分区或一组上的所有列,不依赖于排序。 - **LAG、LEAD函数**:这类函数允许在结果集中向前或向后检索值,避免数据的自连接。 - **VAR_POP、VAR_SAMP、...
### Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数详解 #### 一、OVER (PARTITION BY ..) 概述 在Oracle数据库中,`OVER (PARTITION BY ...)` 是一种非常强大的功能,它允许用户在数据集上进行窗口操作。这在...
3. **制表(Reporting)函数**:与开窗函数同名,但作用于整个分区或结果集中的所有行,不依赖于特定的顺序。常见的制表函数有`SUM()`, `COUNT()`, `AVG()`, `MIN()`, `MAX()`等。 ```sql -- 示例:计算所有员工的...
开窗函数定义了分析函数作用的数据范围,通常包括以下几种类型: 1. **ORDER BY**:根据指定列的值对数据进行排序。 2. **PARTITION BY**:将数据划分成不同的分区,每个分区独立进行计算。 3. **RANGE BETWEEN** ...
1. **`OVER (ORDER BY salary)`**:此函数按薪资排序进行累计计算,其中`ORDER BY`可以被视为一种默认的开窗函数。 2. **`OVER (PARTITION BY deptno)`**:根据部门进行分组(分区),即在每个部门内部执行相应的...
通过上述介绍,我们不仅了解了分析函数的基本用法,还探讨了如何利用开窗函数来定义不同类型的计算窗口,从而实现更高级的数据分析需求。掌握了这些技巧后,您可以更加高效地进行数据探索和洞察发现。
1. **开窗函数(Over)**: 开窗函数允许在一组行上执行计算,这组行被称为“窗口”,窗口可以基于特定的排序或分区条件。例如: - `OVER (ORDER BY salary)` 按薪资排序进行累计。 - `OVER (PARTITION BY deptno)`...
开窗函数是分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化。开窗函数可以指定数据窗口的大小和范围,例如按照 salary 排序进行累计、按照部门分区等。 下面是 Oracle 中一些常用的分析函数...
3. 制表(Reporting)函数:作用于一个分区或一组上的所有列,主要用于报告目的,与开窗函数类似,但`OVER`子句中缺少`ORDER BY`子句。 4. LAG, LEAD函数:允许在结果集中向前或向后检索数据值,常用于在没有自连接...
### 使用 OVER 函数实现递归汇总计算 #### Oracle 分析函数概述 自 Oracle 8.1.6 版本起,Oracle 数据库引入了分析函数(Analytic Functions),这是一种非常强大的工具,主要用于处理复杂的查询需求,尤其是在...
3. **报表(Reporting)函数**:类似于开窗函数,但作用于整个分区或结果集,不涉及排序。 - 示例:`SUM(sales) OVER (PARTITION BY region_id)`,计算每个销售区域的总销售额。 4. **LAG`、`LEAD`函数**:允许在...
Oracle、SQL Server、DB2等主流数据库系统都实现了开窗函数,但MySQL暂时还不支持。 开窗函数与聚合函数相似,都是对一组行进行计算,但不同之处在于,开窗函数可以在每组内返回多个结果,而不是像聚合函数那样只...
开窗语句用于定义窗口的具体范围,常见的有ROWS和RANGE类型。 ##### 1. Rows窗口 ROWS窗口适用于任何类型的数据,并且可以按多列进行排序。 - **Rows N Preceding**:将当前行及其前面N行定义为一个窗口。 ```sql...
通过对开窗函数的灵活运用,如`OVER`子句中的`ORDER BY`、`PARTITION BY`和`ROWS/BETWEEN`等,我们能够轻松地处理复杂的业务逻辑,如计算移动平均、排名、份额等。同时,`AVG`和`CORR`等函数提供了强大的数据分析...
Oracle分析函数是数据库查询中的强大工具,它允许用户在数据集上执行复杂的分析操作,而不仅仅是简单的聚合。分析函数的特点在于它们能够对数据进行排序、筛选,并且可以在不同的分区、窗口和排序规则下运行,这使得...