使用SELECT的排序和聚合函数功能——MySQL数据库学习笔记(五)

·  阅读 110
使用SELECT的排序和聚合函数功能——MySQL数据库学习笔记(五)

「这是我参与2022首次更文挑战的第27天,活动详情查看:2022首次更文挑战

在上篇文章中:使用SELECT的WHERE条件查询数据——MySQL数据库学习笔记(四),我们学会了通过使用DISTINCT关键字对数据去重,以及各种常用运算符的应用:

本篇文章将介绍更多SELECT语句查询数据的更多用法,比如多重条件查询、对查询结果进行排序、使用聚合函数汇总数据等。

多重条件查询

查询计算系年龄在20岁以下的学生姓名

SELECT Sname FROM Student WHERE Sdept = '计算机系' AND Sage < 20;
复制代码

image.png

查询计算机系和信息系年龄大于20岁的学生信息

SELECT * FROM Student WHERE (Sdept = '计算机系' OR Sdept = '信息系') AND Sage >= 20;
复制代码

也可以使用IN语句

SELECT * FROM Student WHERE Sdept IN ('计算机系', '信息系') AND Sage >= 20;
复制代码

image.png

对查询结果进行排序

有时,我们希望对查询的结果进行排序,比如按照考试成绩从高到低来对学生进行排序。SQL语句可以对一个列得值进行排序,也可以按多个列的值进行排序,排序可以是从小到大(升序:ASC),也可以是从大到小(降序:DESC),请看下面的语法:

ORDER BY <列名> [ASC | DESC] [, ...n]
复制代码

将学生按年龄的升序排列

SELECT * FROM Student ORDER BY Sage ASC;
复制代码

image.png

查询选修了“c02”号课程的学生的学号以及其成绩,查询结果按成绩降序排列

SELECT Sno, Grade FROM SC WHERE Cno='c02' ORDER BY Grade DESC;
复制代码

image.png

查询所有学生的信息,查询结果按所在系的系名升序排列,同一系的学生按年龄降序排列

SELECT * FROM Student ORDER BY Sdept ASC, Sage DESC;
复制代码

image.png

使用聚合函数汇总数据

聚合函数也成为集合函数或统计函数,它用来对一组值进行计算并返回单个值。SQL提供的聚合函数有:

  • COUNT(*):统计表中的数据条数。
  • COUNT([DISTINCT] <列名>):统计本列非空列值个数,DISTINCT表示不包括列的重复值。
  • SUM(<列名>):计算列值总和(列必须是数值型)
  • AVG(<列名>):计算列值平均值(列必须是数值型)
  • MAX(<列名>):求列值最大值
  • MIN(<列名>):求列值最小值

统计学生总人数

SELECT COUNT(*) FROM Student;
复制代码

image.png

统计选修了课程的学生人数

SELECT COUNT(DISTINCT Sno) FROM SC;
复制代码

image.png

计算“9512101”学生的选课门数和考试总成绩

SELECT COUNT(*) AS 选课门数, SUM(Grade) AS 总成绩 FROM SC WHERE Sno = '9512101';
复制代码

image.png

计算“c01”课程的考试平均成绩

SELECT AVG(Grade) AS 平均成绩 FROM SC WHERE Cno = 'c01';
复制代码

image.png

查询“c01”课程的考试最高分和最低分

SELECT MAX(Grade) AS 最高分, MIN(Grade) AS 最低分 FROM SC WHERE Cno = 'c01';
复制代码

image.png

查询“9512101”学生的选课门数、已开始课程门数以及考试最高分、最低分和平均分。

SELECT COUNT(*) AS 选课门数, COUNT(Grade) AS 考试门数,
    MAX(Grade) AS 最高分, MIN(Grade) AS 最低分,
    AVG(Grade) AS 平均分
    FROM SC WHERE Sno = '9512101';
复制代码

image.png

结尾

下篇文章将学习SQL的GROUP BY分组查询。

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改