以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
);
现在我们将向这两个表中插入一些数据:
```SQLINSERT 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表的得分和排名的平均值。以下是示例代码:
```SQLSELECT
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连接两个表,并使用聚合函数进行统计,可以方便地聚合多个表中的数据。