以Oracle聚合两个表中的数据(oracle 俩表合并)

以Oracle聚合两个表中的数据

Oracle是一款非常强大的关系型数据库系统,具有良好的数据管理和数据查询功能。在企业级应用中,经常需要将多个表中的数据聚合起来进行查询和统计。本文将介绍如何使用Oracle聚合两个表中的数据。

我们需要创建两个表来存储数据。假设我们有两个表:T1和T2。T1表包含姓名(name)、年龄(age)和性别(gender)三个字段,T2表包含姓名(name)、得分(score)和排名(rank)三个字段。我们可以使用以下SQL语句创建这两个表:

“`SQL

CREATE TABLE T1 (

name VARCHAR2(20),

age NUMBER,

gender VARCHAR2(10)

);

CREATE TABLE T2 (

name VARCHAR2(20),

score NUMBER,

rank NUMBER

);


现在我们将向这两个表中插入一些数据:

```SQL
INSERT INTO T1 VALUES ('Tom', 20, 'Male');
INSERT INTO T1 VALUES ('Amy', 18, 'Female');
INSERT INTO T1 VALUES ('Jack', 22, 'Male');
INSERT INTO T2 VALUES ('Tom', 95, 1);
INSERT INTO T2 VALUES ('Amy', 87, 2);
INSERT INTO T2 VALUES ('Jack', 92, 3);

接下来,我们需要使用Oracle的聚合函数来聚合这两个表中的数据。我们可以使用JOIN操作将两个表连接起来,然后使用聚合函数统计数据。我们将使用内连接(inner join)将两个表连接起来,以姓名(name)作为连接条件。以下是示例代码:

“`SQL

SELECT

T1.name,

T1.age,

T1.gender,

T2.score,

T2.rank

FROM

T1

INNER JOIN

T2

ON

T1.name = T2.name


上面的代码中使用了INNER JOIN关键字将T1和T2表连接起来,同时使用ON关键字指定连接条件。我们将T1和T2中相同的姓名(name)作为连接条件。使用SELECT语句选择需要查询的字段,包括T1表的姓名(name)、年龄(age)、性别(gender)字段,以及T2表的得分(score)和排名(rank)字段。

此时,返回的结果集包含T1和T2两个表中姓名(name)相同的记录,即:

name age gender score rank

—————————————–

Tom 20 Male 95 1

Amy 18 Female 87 2

Jack 22 Male 92 3


我们可以使用聚合函数对这个结果集进行统计。假设我们想要计算T1表中男性和女性的平均年龄和T2表的得分和排名的平均值。以下是示例代码:

```SQL
SELECT
T1.gender,
AVG(T1.age),
AVG(T2.score),
AVG(T2.rank)
FROM
T1
INNER JOIN
T2
ON
T1.name = T2.name
GROUP BY
T1.gender

上面的代码中使用了AVG聚合函数分别计算T1表中男性和女性的平均年龄(AVG(T1.age))、T2表中得分和排名的平均值(AVG(T2.score)和AVG(T2.rank))。同时使用GROUP BY关键字指定了按性别(gender)进行分组。返回的结果如下:

gender  AVG(T1.age) AVG(T2.score)   AVG(T2.rank)
-------------------------------------------------
Male 21 95 2
Female 18 87 2

通过以上步骤,我们成功地使用Oracle聚合了两个表中的数据。

综上,本文介绍了如何使用Oracle聚合两个表中的数据。通过INNER JOIN连接两个表,并使用聚合函数进行统计,可以方便地聚合多个表中的数据。


数据运维技术 » 以Oracle聚合两个表中的数据(oracle 俩表合并)