聚合函数 分组

-COUNT:统计行数量

–SUM:获取单个列的合计值

–AVG:计算某个列的平均值

–MAX:计算列的最大值

–MIN:计算列的最小值

执行列、行计数(count):

标准格式
SELECT COUNT(<计数规范>) FROM <表名>
其中,计数规范包括:

- * :计数所有选择的行,包括NULL值;

- ALL 列名:计数指定列的所有非空值行,如果不写,默认为ALL;

- DISTINCT 列名:计数指定列的唯一非空值行。

例,计算班里共有多少学生:

SELECT COUNT(*) FROM t_student;

也可加入筛选条件,如求女学生数目:

SELECT COUNT(*) FROM t_student WHERE student_sex='女';


如果要计算班级数目,就需要用到DISTINCT:

SELECT COUNT(DISTINCT student_class) FROM t_student;

DISTINCT即去重,如果不加DISTINCT则结果为表行数——5。

返回列合计值(SUM):

注:sum只要ALL与DISTINCT两种计数规范,无*。

计算学生年龄之和:

SELECT SUM(student_age) FROM t_student;

返回列平均值(AVG):

计算学生平均年龄:

SELECT AVG(student_age)FROM t_student;

返回最大值/最小值(MAX/MIN):

求年龄最大的学生信息(最小值同理):

SELECT MAX(student_age) FROM t_student;

注:这里只能求出最大年龄,要想显示年龄最大的学生全部信息,需要用到之后的子查询。

数据分组(GROUP BY):

SQL中数据可以按列名分组,搭配聚合函数十分实用。

例,统计每个班的人数:

SELECT student_class,COUNT(ALL student_name) AS 总人数 FROM t_student GROUP BY (student_class);
AS为定义别名,别名的使用在组合及联接查询时会有很好的效果


分组中也可以加入筛选条件WHERE,执行顺序为:WHERE过滤→分组→聚合函数。

统计每个班上20岁以上的学生人数:

SELECT student_class,COUNT(student_name) AS 总人数 FROM t_student WHERE student_age >20 GROUP BY (student_class);

HAVING过滤条件:

例,我们想查询平均年龄在20岁以上的班级

SELECT student_class,AVG(student_age) AS 平均年龄 FROM t_student GROUP BY (student_class) HAVING AVG(student_age)>20;

SQL的执行顺序:

–第一步:执行FROM

–第二步:WHERE条件过滤

–第三步:GROUP BY分组

–第四步:执行SELECT投影列

–第五步:HAVING条件过滤

–第六步:执行ORDER BY 排序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值