数据库题目

在这里插入图片描述
首先建立如上图所示的数据表t_student

SQL中聚合函数的分类

1.COUNT:统计行数量(依上图,通过统计行数可以知道学生的数量)
2.SUM:获得单个列的合计值(如student_age那一列,可用该函数来求学生年龄之和)
3.AVG:计算某个列的平均值
3.MAX:计算某个列的最大值
4.MIN:计算列的最小值

执行列、行计数的标准格式: SELECT COUNT(计数规范) FROM 表名

计数规范包括:
1.* 代表计数所有行包括NULL值
2.ALL+列名 代表计数指定列的所有非NULL行。如果不写默认为ALL
3.DISTINCT+列名 代表计数列的非NULL行,且重复的行算一个(如上去重复之后只有T01、T02、T03,计数结果为3)

例题
计算班级里有多少学生
SELECT COUNT(*) FROM t_student; 结果为5

计算班级里有多少女生
SELECT COUNT(*) FROM t_student WHERE student_age=‘女’; 结果为2

计算班级的数目(因为student_class中有重复的值,因此需要用到DISTINCT)
SELECT COUNT(DISTINCT student_class) FROM t_student; 结果为3,没有DISTINCT的话结果为5

SUM(SUM中只有ALL和DISTINCT两种计数规范,无*)

计算学生年龄之和
SELECT SUM(student_age) FROM t_student; 结果为136

计算学生的平均年龄
SELECT AVG(student_age) FROM t_student; 结果为22.6

计算学生年龄的最大值
SELECT MAX(student_age) FROM t_student; 结果为30

数据分组(GROUP BY)

SQL中的数据可以根据列名分组,结合聚合函数后非常实用。

统计每个班的人数
SELECT student_class, COUNT(ALL student_name) AS 总人数 FROM t_student GROUP BY (student_class);

统计每个班级20岁以上的学生人数(这里一定要注意的是,执行顺序为:WHERE过滤→分组→聚合函数。牢记!)
SELECT student_class,COUNT(ALL student_name) AS 总人数 FROM t_student WHERE student_age>20 GROUP BY (student_class);

SQL的执行顺序:
–第一步:执行FROM
–第二步:WHERE条件过滤
–第三步:GROUP BY分组
–第四步:执行SELECT投影列
–第五步:HAVING条件过滤
–第六步:执行ORDER BY 排序

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值