SQL聚合函数用于对一组数据进行计算并返回单个结果,其中COUNT用来统计记录行数,SUM用来求某列数值的总和。掌握这两个函数能帮助你快速完成报表统计与业务汇总。

一、COUNT函数的基础用法
COUNT函数最常见的形式是COUNT(*)和COUNT(列名)。前者统计所有行,后者忽略该列为NULL的记录。
1. 统计学生表总人数
-- 创建示例学生表 CREATE TABLE student ( id INT, name VARCHAR(50), score INT ); -- 插入测试数据 INSERT INTO student VALUES (1, '张三', 88); INSERT INTO student VALUES (2, '李四', NULL); INSERT INTO student VALUES (3, '王五', 92); -- 统计总人数,包含成绩为NULL的行 SELECT COUNT(*) AS total FROM student;
2. 统计有成绩的学生数
-- 只统计score不为NULL的记录 SELECT COUNT(score) AS has_score FROM student;
二、SUM函数的基础用法
SUM函数对数值列求和,如果列中存在NULL,会被当作0处理。
1. 计算学生总分
-- 求所有学生成绩总和 SELECT SUM(score) AS sum_score FROM student;
三、结合GROUP BY分组统计
聚合函数通常与GROUP BY一起使用,按某列分组后再统计。
1. 订单表按用户汇总金额
-- 创建订单表
CREATE TABLE orders (
user_id INT,
amount DECIMAL(10,2)
);
INSERT INTO orders VALUES (1, 10.5);
INSERT INTO orders VALUES (1, 20.0);
INSERT INTO orders VALUES (2, 15.0);
-- 每个用户的订单数与总金额
SELECT user_id,
COUNT(*) AS order_cnt,
SUM(amount) AS total_amount
FROM orders
GROUP BY user_id;
四、使用注意点
- COUNT(*)统计包含NULL的行,COUNT(列)不包含该列为NULL的行。
- SUM只能用于数值类型,对文本列使用会报错。
- SELECT中出现的非聚合列,必须写在GROUP BY后面。
在写统计SQL时,先想清楚要按什么维度分组,再决定用COUNT还是SUM,能减少返工。
五、小结
COUNT和SUM是SQL里最实用的聚合函数。通过上面的学生表和订单表例子,你可以在自己的业务中替换表名与字段名,快速实现计数与求和需求。