下面就是关于“Oracle的SQL语句之多表查询和组函数”的完整攻略。
多表查询
在实际的业务场景中,我们经常需要从多个表中查询数据,这就要用到多表查询。Oracle中的多表查询主要有三种方式:
- 内连接:查询两个表中的共同数据,即交集。使用 INNER JOIN 或 JOIN 关键字实现。
- 左连接:查询第一个表中的所有数据和第二个表中的共同数据,即左表包含所有右表的数据。使用 LEFT JOIN 或 LEFT OUTER JOIN 实现。
- 右连接:查询第二个表中的所有数据和第一个表中的共同数据,即右表包含所有左表的数据。使用 RIGHT JOIN 或 RIGHT OUTER JOIN 实现。
下面是两个示例:
假设我们有两个表:一个是学生表(students),包含学生的姓名和班级,另一个是班级表(classes),包含班级的名称和教师姓名。我们需要查询每个班级的平均成绩。
示例1:内连接
SELECT c.name AS class_name, AVG(s.score) AS avg_score
FROM classes c
INNER JOIN students s ON c.name = s.class_name
GROUP BY c.name;
解析:
- 使用 INNER JOIN 连接两个表,连接条件是班级名相等。
- 使用 GROUP BY 分组,按照班级名分组。
- 使用 AVG 函数计算每个班级的平均成绩。
示例2:左连接
SELECT c.name AS class_name, AVG(s.score) AS avg_score
FROM classes c
LEFT JOIN students s ON c.name = s.class_name
GROUP BY c.name;
解析:
- 使用 LEFT JOIN 连接两个表,连接条件是班级名相等。
- 因为是左连接,所以保留左表的所有数据,即使右表中没有相应的数据也会显示。
- 使用 GROUP BY 分组,按照班级名分组。
- 使用 AVG 函数计算每个班级的平均成绩。
组函数
组函数是用于对一个或多个值进行计算,并返回单一结果的函数。常见的组函数包括:SUM、AVG、COUNT、MAX、MIN 等。
下面是一个示例:
假设我们有一个订单表(orders),包含订单号、顾客号和订单总金额。我们需要查询每个顾客的总订单金额、平均订单金额、订单数、最高订单金额和最低订单金额。
SELECT customer_id,
SUM(total_amount) AS total_amount,
AVG(total_amount) AS avg_amount,
COUNT(*) AS order_count,
MAX(total_amount) AS max_amount,
MIN(total_amount) AS min_amount
FROM orders
GROUP BY customer_id;
解析:
- 使用 GROUP BY 分组,按照顾客号分组。
- 使用 SUM 函数计算每个顾客的总订单金额。
- 使用 AVG 函数计算每个顾客的平均订单金额。
- 使用 COUNT 函数计算每个顾客的订单数。
- 使用 MAX 函数计算每个顾客的最高订单金额。
- 使用 MIN 函数计算每个顾客的最低订单金额。
以上就是关于“Oracle的SQL语句之多表查询和组函数”的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Orancle的SQL语句之多表查询和组函数 - Python技术站