1. 什么是集合函数
集合函数,也叫聚集函数,是SQL语言中一种用于处理数据的函数。它们针对多个行进行计算,并返回一个单一的值作为结果。集合函数可以用来作为SELECT语句中的列,或者用于WHERE或HAVING子句中。下面介绍几种常见的集合函数。
1.1 SUM()
SUM()函数用于计算指定列的总和。
SELECT SUM(column_name) FROM table_name;
注:column_name必须是数值型数据。
1.2 AVG()
AVG()函数用于计算指定列的平均值。
SELECT AVG(column_name) FROM table_name;
注:column_name必须是数值型数据。
1.3 COUNT()
COUNT()函数用于计算行数或满足条件的行数。
SELECT COUNT(*) FROM table_name; -- 计算表中的所有行数
SELECT COUNT(column_name) FROM table_name; -- 计算指定列不为NULL的行数
SELECT COUNT(DISTINCT column_name) FROM table_name; -- 计算指定列不同值的数量
1.4 MAX()
MAX()函数用于计算指定列的最大值。
SELECT MAX(column_name) FROM table_name;
1.5 MIN()
MIN()函数用于计算指定列的最小值。
SELECT MIN(column_name) FROM table_name;
2. 使用集合函数处理数据
下面通过一个实例来演示如何使用集合函数对数据进行处理。
2.1 实例说明
假设有一个存储销售订单的表order,它的结构如下:
CREATE TABLE order (
order_id INT PRIMARY KEY,
customer_name VARCHAR(50) NOT NULL,
order_date DATE,
amount DECIMAL(10,2),
completed TINYINT(1)
);
其中,order_id是主键,customer_name表示客户名称,order_date表示订单日期,amount表示订单金额,completed表示订单是否完成。
现在需要统计每个客户的订单总数、订单总金额、平均订单金额、最大订单金额和最小订单金额。
2.2 实例分析
根据需求,需要对表order进行聚合操作。使用GROUP BY子句可以对表进行分组,而集合函数可以在分组后的结果上进行计算。下面给出相应的SQL语句。
SELECT customer_name,
COUNT(*) AS order_count,
SUM(amount) AS total_amount,
AVG(amount) AS avg_amount,
MAX(amount) AS max_amount,
MIN(amount) AS min_amount
FROM order
WHERE completed = 1
GROUP BY customer_name;
以上SQL语句会对表order进行分组,每个分组对应一个客户名称。然后,每个分组使用COUNT()、SUM()、AVG()、MAX()和MIN()函数进行计算,最终返回每个客户的订单总数、订单总金额、平均订单金额、最大订单金额和最小订单金额。
2.3 结果演示
运行以上SQL语句,可以得到以下结果:
+---------------+-------------+--------------+----------------+-------------+-------------+
| customer_name | order_count | total_amount | avg_amount | max_amount | min_amount |
+---------------+-------------+--------------+----------------+-------------+-------------+
| Alice | 3 | 750.00 | 250.000000 | 300.00 | 200.00 |
| Bob | 4 | 920.00 | 230.000000 | 350.00 | 150.00 |
| Carol | 2 | 320.00 | 160.000000 | 200.00 | 120.00 |
+---------------+-------------+--------------+----------------+-------------+-------------+
结果说明:
客户Alice一共下了3单,订单总金额为750.00元,平均订单金额为250.00元,最大订单金额为300.00元,最小订单金额为200.00元。
客户Bob一共下了4单,订单总金额为920.00元,平均订单金额为230.00元,最大订单金额为350.00元,最小订单金额为150.00元。
客户Carol一共下了2单,订单总金额为320.00元,平均订单金额为160.00元,最大订单金额为200.00元,最小订单金额为120.00元。
3. 总结
本文介绍了SQL语言中的集合函数,包括SUM()、AVG()、COUNT()、MAX()和MIN()函数,并通过一个实例演示了如何使用它们对数据进行聚合操作。集合函数是SQL语言中非常有用的函数,可以统计、计算表中的数据,是SQL开发中需要掌握的基本技能。