深入理解SQL聚合函数:以interactive-tutorials项目为例

深入理解SQL聚合函数:以interactive-tutorials项目为例

interactive-tutorials Interactive Tutorials interactive-tutorials 项目地址: https://gitcode.com/gh_mirrors/in/interactive-tutorials

什么是SQL聚合函数

SQL聚合函数是数据库查询中用于对一组值执行计算并返回单个值的特殊函数。这些函数能够帮助我们快速获取数据集的统计信息,是数据分析的基础工具。

常用聚合函数详解

基础数值聚合函数

  1. COUNT() - 计算行数或非NULL值的数量

    • COUNT(*) 计算所有行数
    • COUNT(column) 计算指定列中非NULL值的数量
  2. SUM() - 计算数值列的总和

    • 仅适用于数值类型列
    • 自动忽略NULL值
  3. AVG() - 计算数值列的平均值

    • 实际上是SUM()/COUNT()的组合
    • 同样忽略NULL值
  4. MIN()/MAX() - 获取列中的最小/最大值

    • 适用于数值、日期和字符串类型
    • 字符串比较基于字典序

字符串聚合函数

GROUP_CONCAT() 是常用的字符串聚合函数,它将多行中的字符串值连接成一个字符串:

  • 默认使用逗号分隔
  • 可以指定自定义分隔符
  • 结果字符串长度可能受数据库配置限制

聚合函数实战示例

让我们通过一个学生成绩表的例子来演示聚合函数的实际应用:

CREATE TABLE grades (name TEXT, grade INTEGER);

INSERT INTO grades (name, grade) VALUES
    ("John", 97), ("Eric", 88), ("Jessica", 98), ("Mike", 82), ("Jeff", NULL);

-- 统计学生总数
SELECT COUNT(name) AS student_count FROM grades;

-- 计算有成绩的学生数量
SELECT COUNT(grade) AS graded_students FROM grades;

-- 计算成绩总和
SELECT SUM(grade) AS total_grade FROM grades;

-- 计算平均成绩
SELECT AVG(grade) AS average_grade FROM grades;

-- 找出最低分和最高分
SELECT MIN(grade) AS min_grade, MAX(grade) AS max_grade FROM grades;

-- 连接所有学生姓名
SELECT GROUP_CONCAT(name) AS student_names FROM grades;

GROUP BY与聚合函数的结合使用

当我们需要按某个字段分组统计时,必须使用GROUP BY子句。此时,SELECT子句中只能包含:

  1. GROUP BY中指定的列
  2. 聚合函数计算的其他列

分组聚合示例

假设我们有一个包含班级信息的学生成绩表:

CREATE TABLE grades (name TEXT, class INTEGER, grade INTEGER);

INSERT INTO grades (name, class, grade) VALUES
    ("John", 1, 97), ("Eric", 1, 88), ("Jessica", 1, 98), ("Mike", 1, 82), ("Jeff", 1, NULL),
    ("Ben", 2, 93), ("Andrew", 2, 82), ("Jason", 2, 87), ("Carol", 2, 99), ("Fred", 2, 79);

-- 按班级分组统计
SELECT 
    class,
    COUNT(*) AS student_count,
    AVG(grade) AS average_grade,
    MIN(grade) AS min_grade,
    MAX(grade) AS max_grade,
    GROUP_CONCAT(name) AS student_names
FROM grades
GROUP BY class;

常见问题与注意事项

  1. NULL值处理:大多数聚合函数自动忽略NULL值,COUNT(*)例外
  2. 分组规则:GROUP BY后SELECT中非分组列必须使用聚合函数
  3. 性能考虑:在大表上使用聚合函数可能影响性能,适当添加索引
  4. 结果精度:AVG()等函数可能返回浮点数,需注意类型转换

实践练习

尝试编写查询找出每个班级的最高分:

SELECT class, MAX(grade) AS highest_grade
FROM grades
GROUP BY class;

通过掌握这些聚合函数,你将能够从数据库中提取更有价值的统计信息,为数据分析打下坚实基础。

interactive-tutorials Interactive Tutorials interactive-tutorials 项目地址: https://gitcode.com/gh_mirrors/in/interactive-tutorials

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霍虹情Victorious

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值