在数据分析和数据库管理中,聚合函数是一类非常重要的工具,它们能够对数据集进行计算并返回单个结果。梧桐数据库提供了丰富的聚合函数,这些函数可以帮助我们快速地对数据进行汇总、分析和处理。本文将介绍梧桐数据库中一些常用的聚合函数及其使用示例,包括创建表、查询 SQL 以及执行结果,以帮助您更有效地利用这些强大的工具。
创建表
首先,我们需要创建一个 employees
表来存储员工信息。
CREATE TABLE employees (
employee_id SERIAL,
name VARCHAR(100),
salary NUMERIC(10, 2),
department_id INTEGER
);
执行结果:
CREATE TABLE
插入测试数据
接下来,我们插入一些测试数据以便进行聚合函数的演示。
INSERT INTO employees (name, salary, department_id) VALUES
('John Doe', 5000.00, 1),
('Jane Smith', 6000.00, 1),
('Emily Jones', 5500.00, 2),
('Michael Brown', 7000.00, 2),
('David Wilson', 4500.00, 1);
执行结果:
INSERT 0 5
COUNT():计算行数
COUNT()
函数用于计算集合中的行数,不论列值是否为 NULL。
SELECT COUNT(*) FROM employees;
-- 计算员工总数
执行结果:
count
-------
5
(1 row)
SELECT COUNT(DISTINCT department_id) FROM employees;
-- 计算不同部门的数量
执行结果:
count
-------
2
(1 row)
SUM():计算总和
SUM()
函数用于计算数值列的总和,非常适合财务和统计分析。
SELECT SUM(salary) FROM employees;
-- 计算所有员工的薪资总和
执行结果:
sum
-------
24000
(1 row)
AVG():计算平均值
AVG()
函数用于计算数值列的平均值,是分析数据分布的常用函数。
SELECT AVG(salary) FROM employees;
-- 计算所有员工的薪资平均值
执行结果:
avg
-----------
4800.000
(1 row)
MAX() 和 MIN():找出最大值和最小值
MAX()
和 MIN()
函数分别用于找出数值列的最大值和最小值,常用于识别数据范围。
SELECT MAX(salary), MIN(salary) FROM employees;
-- 找出薪资最高和最低的员工
执行结果:
max | min
-------+-------
7000 | 4500
(1 row)
STRING_AGG():字符串连接
STRING_AGG()
函数可以将多行的字符串值连接成一个字符串,并允许指定分隔符。
SELECT STRING_AGG(name, ', ') FROM employees;
-- 将所有员工的名字用逗号分隔连接成一个字符串
执行结果:
string_agg
--------------
John Doe, Jane Smith, Emily Jones, Michael Brown, David Wilson
(1 row)
ARRAY_AGG():数组聚合
ARRAY_AGG()
函数将多行的值聚合成一个数组,适用于需要将结果集作为数组处理的场景。
SELECT ARRAY_AGG(department_id) FROM employees;
-- 将所有员工的部门 ID 聚合成一个数组
执行结果:
array_agg
-----------
{1, 1, 2, 2, 1}
(1 row)
使用聚合函数进行分组
聚合函数常与 GROUP BY
子句一起使用,以对特定分组的数据进行聚合计算。
SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id;
-- 按部门分组计算每个部门的薪资平均值
执行结果:
department_id | avg
---------------+-------
1 | 5166.67
2 | 6166.67
(2 rows)
HAVING 子句与聚合函数
HAVING
子句用于对聚合后的结果进行过滤,它允许我们在聚合函数的基础上进行更细致的数据筛选。
SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id HAVING AVG(salary) > 5000;
-- 找出平均薪资超过 5000 的部门
执行结果:
department_id | avg
---------------+-------
2 | 6166.67
(1 row)
梧桐数据库的聚合函数不仅功能强大,而且使用灵活,能够满足各种复杂的数据分析需求。无论是简单的行数统计还是复杂的数据汇总,这些聚合函数都是您在数据库操作中不可或缺的工具。在实际应用中,您可以根据具体的业务逻辑和数据结构选择合适的聚合函数,以实现高效的数据管理和分析。