oracle中小计与总计的运用(oracle中小计合计)

在Oracle数据库中,小计和总计是常用的聚合函数,用于计算某一列的总和或平均值。在实际应用中,小计和总计可以帮助我们更加便捷地对数据进行分类汇总,从而更好地进行数据分析和决策。本文将介绍如何在Oracle数据库中使用小计和总计。

一、小计

小计(subtotal)是指在某一列或某几列数据中,对数据进行分组计算,计算每一组的小计。小计通常需要和group by一起使用,具体的语法为:

“`sql

select col1, col2, …,sum(colx) from table group by col1, col2, …


其中,col1、col2等是表格中的列名,colx是需要计算小计的列名。上述语句的含义是:按照col1、col2等列进行分组,对colx列中的数据进行求和并进行小计。例如:

```sql
select category, sum(price) from products group by category;

这条SQL语句的作用是:按照产品分类对产品价格进行小计。

二、总计

总计(grand total)是指在某一列或某几列数据中,对所有数据进行计算,得出该列数据的总和、平均值等。总计通常需要在小计的基础上进行计算,可以通过with rollup关键字实现。具体的语法为:

“`sql

select col1, col2, …,sum(colx) from table group by col1, col2, … with rollup


其中,with rollup关键字的作用是对结果进行总计。例如:

```sql
select category, sum(price) from products group by category with rollup;

这条SQL语句的作用是:按照产品分类对产品价格进行小计,并进行总计。

三、实例与代码

下面通过一个实例来展示小计和总计的使用方法。假设我们有一张表t_student,其中包含学生的学号、姓名、性别、年龄和成绩等信息,我们希望对成绩进行小计和总计。

1、创建表格并插入数据

“`sql

CREATE TABLE t_student (

id int(6) NOT NULL AUTO_INCREMENT,

name varchar(20) NOT NULL,

gender varchar(10) DEFAULT NULL,

age int(2) DEFAULT NULL,

score int(3) DEFAULT NULL,

PRIMARY KEY (id)

) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

INSERT INTO t_student (name, gender, age, score) VALUES (‘John’, ‘male’, 18, 90);

INSERT INTO t_student (name, gender, age, score) VALUES (‘Mary’, ‘female’, 19, 85);

INSERT INTO t_student (name, gender, age, score) VALUES (‘Lucy’, ‘female’, 18, 92);

INSERT INTO t_student (name, gender, age, score) VALUES (‘Tom’, ‘male’, 18, 80);

INSERT INTO t_student (name, gender, age, score) VALUES (‘Lily’, ‘female’, 19, 89);

INSERT INTO t_student (name, gender, age, score) VALUES (‘Jack’, ‘male’, 19, 87);

INSERT INTO t_student (name, gender, age, score) VALUES (‘Bob’, ‘male’, 18, 88);

INSERT INTO t_student (name, gender, age, score) VALUES (‘Josh’, ‘male’, 19, 83);

INSERT INTO t_student (name, gender, age, score) VALUES (‘Ann’, ‘female’, 18, 95);

INSERT INTO t_student (name, gender, age, score) VALUES (‘Sam’, ‘male’, 20, 86);


2、对成绩进行小计和总计

```sql
select gender, avg(score) as avg_score, count(*) as count
from t_student
group by gender with rollup;

上述SQL语句的结果为:

| gender | avg_score | count |

| ——- | ——— | —– |

| female | 90.3333 | 4 |

| male | 85.8 | 6 |

| NULL | 87.3333 | 10 |

其中,第一列为性别,第二列为平均分,第三列为人数。第三行为总计。从结果中可以看出,女生的平均分为90.3,共有4人;男生的平均分为85.8,共有6人;整个班级的平均分数为87.3,共有10人。

四、总结

小计和总计是Oracle数据库中常用的聚合函数,可以帮助我们更加便捷地进行数据分类汇总。通过本文的介绍,相信大家已经对小计和总计的使用方法有了一定的了解。在实际应用中,可以根据实际需求采用不同的方法进行数据分析和决策。


数据运维技术 » oracle中小计与总计的运用(oracle中小计合计)