连接查询和聚合函数是 SQL 中非常重要的两个概念,它们分别用于多表查询和统计分组数据。下面我会通过两个实例来详细讲解 SQL 中如何组合使用连接查询和聚合函数。
实例一:查询订单总金额最高的客户
假设我们有两个表:customers
和 orders
,它们的结构如下所示:
customers
| id | name | email |
|----|-------|-----------------|
| 1 | Alice | alice@gmail.com |
| 2 | Bob | bob@gmail.com |
| 3 | Cathy | cathy@gmail.com |
orders
| id | customer_id | amount |
|----|------------|--------|
| 1 | 1 | 100 |
| 2 | 1 | 200 |
| 3 | 2 | 150 |
| 4 | 3 | 300 |
现在我们要查询订单总金额最高的客户,我们可以使用连接查询和聚合函数的组合来完成:
SELECT c.name, SUM(o.amount) AS total_amount
FROM customers c
JOIN orders o ON c.id = o.customer_id
GROUP BY c.id
ORDER BY total_amount DESC
LIMIT 1;
上面这行 SQL 语句中,JOIN
关键字用于连接两个表,SUM
函数用于对订单金额做总和,GROUP BY
用于对客户进行分组,ORDER BY
用于对总金额进行降序排序,最后使用 LIMIT
来获取第一个结果。
运行上面的 SQL 语句,得到的结果应该是:
| name | total_amount |
|-------|--------------|
| Cathy | 300 |
这个结果表示客户 Cathy 的订单总金额最高,为 300。
实例二:查询每个客户的订单总金额和平均金额
现在我们要查询每个客户的订单总金额和平均金额,我们可以使用同样的组合方式:
SELECT c.name, SUM(o.amount) AS total_amount, AVG(o.amount) AS avg_amount
FROM customers c
JOIN orders o ON c.id = o.customer_id
GROUP BY c.id;
这行 SQL 语句中,JOIN
关键字用于连接两个表,SUM
函数用于对订单金额做总和,AVG
函数用于对订单金额做平均值,GROUP BY
用于对客户进行分组。
运行上面的 SQL 语句,得到的结果应该是:
| name | total_amount | avg_amount |
|-------|--------------|------------|
| Alice | 300 | 150 |
| Bob | 150 | 150 |
| Cathy | 300 | 300 |
这个结果表示客户 Alice 和 Cathy 的订单总金额相等,且平均金额不同,客户 Bob 的订单总金额和平均金额相等。
总结:连接查询和聚合函数的组合是 SQL 中常用的操作之一,可以灵活运用来分析和统计数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL 组合使用连接查询与聚合函数 - Python技术站