【SQL教程】Day04-07:使用SQL进行聚合查询和分组统计

在SQL中,聚合查询(Aggregate Query)是通过聚合函数来计算表中的某些数据,如记录数量、总和、平均值、最大值等。它可以帮助我们快速获得统计信息,而无需手动处理每条记录。在本文中,我们将深入探讨如何使用SQL进行聚合查询和分组统计。

1. 聚合函数基础

聚合函数允许我们对一列数据进行计算。最常用的聚合函数包括:COUNTSUMAVGMAXMIN

1.1 统计总记录数

如果我们想统计一个表中有多少条记录,传统的做法是使用SELECT *查询所有记录,再统计行数。但这种做法效率低下。使用聚合函数COUNT()可以轻松实现这一功能:


 
sql-- 使用COUNT统计记录数SELECT COUNT(*) FROM students;

 

COUNT(*)会返回记录的总行数,它会包括所有行。如果我们想统计某一条件下的记录数,例如统计性别为"男"的学生数量,可以加上WHERE条件:


 

 

sql-- 统计男生的数量SELECT COUNT(*) AS boys FROM students WHERE gender = 'M';

 

1.2 聚合函数说明

 

函数说明
COUNT计算记录的数量
SUM计算某列的总和,该列必须是数值类型
AVG计算某列的平均值,该列必须是数值类型
MAX返回某列的最大值,适用于所有数据类型
MIN返回某列的最小值,适用于所有数据类型

1.3 使用聚合查询计算平均值

如果我们想统计男生的平均成绩,可以使用AVG()聚合函数:


 
sql-- 计算男生的平均成绩SELECT AVG(score) AS average FROM students WHERE gender = 'M';

 

如果没有符合WHERE条件的记录,COUNT()会返回0,而其他聚合函数如SUM()AVG()MAX()MIN()会返回NULL

2. 分页查询与总页数计算

在处理大量数据时,分页查询是一种常用的手段。假设我们每页显示3条记录,可以通过LIMITOFFSET来实现分页查询。

2.1 获取第1页的记录


 

 

sql-- 获取第1页的数据SELECT id, name, gender, scoreFROM studentsORDER BY score DESCLIMIT 3 OFFSET 0;

 

2.2 获取第2页的记录


 

 

sql-- 获取第2页的数据SELECT id, name, gender, scoreFROM studentsORDER BY score DESCLIMIT 3 OFFSET 3;

 

2.3 计算总页数

我们可以通过计算总记录数并除以每页显示的记录数来得到总页数。为了确保分页结果准确,可以使用CEILING()来向上取整:


 
sql-- 计算总页数SELECT CEILING(COUNT(*) / 3) AS total_pages FROM students;

 

3. 分组聚合查询

有时候,我们需要按某个字段(如班级)对数据进行分组,并对每个分组进行聚合计算。SQL提供了GROUP BY子句来实现这一功能。

3.1 按班级分组统计学生数量


 

 

sql-- 按班级统计学生数量SELECT class_id, COUNT(*) AS num FROM students GROUP BY class_id;

 

GROUP BY会将记录按class_id字段分组,然后对每个分组执行COUNT()函数,统计每个班级的学生数量。

3.2 按班级和性别分组统计学生数量

我们还可以将多个字段用于分组,例如按班级和性别分组:


 
sql-- 按班级和性别分组统计学生数量SELECT class_id, gender, COUNT(*) AS num FROM students GROUP BY class_id, gender;

 

这样,我们可以看到每个班级男生和女生的数量。

3.3 按班级计算平均分


 

 

sql-- 按班级计算平均成绩SELECT class_id, AVG(score) AS average FROM students GROUP BY class_id;

 

3.4 按班级和性别计算平均分


 

 

sql-- 按班级和性别计算平均成绩SELECT class_id, gender, AVG(score) AS average FROM students GROUP BY class_id, gender;

 

4. 小结

  1. 聚合查询使我们能够高效地计算记录总数、总和、平均值、最大值和最小值。

  2. GROUP BY子句允许我们对数据进行分组,并对每个分组执行聚合操作。

  3. 在分页查询中,我们可以使用LIMITOFFSET来控制返回的数据范围,并计算总页数。

  4. 聚合查询支持WHERE条件,可以精确统计符合条件的记录。

 

通过掌握聚合查询和分组统计的技巧,我们可以快速而准确地处理大量数据,为数据分析提供强有力的支持。

 


 

此文适用于SQL学习者,帮助大家理解如何使用SQL进行常见的聚合查询及分页操作,并结合实际业务需求进行数据统计与分析。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值