mysql_2-3聚合函数统计数据

164 阅读2分钟

mysql_2-3聚合函数统计数据

一、 聚合函数

MySQL中的聚集函数用于对一组值进行计算,并返回单个值。这些函数通常与GROUP BY子句一起使用,以便对分组的数据进行统计。

  1. 语法: image-20241116111803030
  2. 实例:
  • a. 查询学生总数。

    •       SELECT  COUNT(*)  FROM  student;
      

      img

  • b. 查询选修了课程的学生人数。

    •       SELECT  COUNT(DISTINCT sno)  FROM  sc;
      

      img

  • c. 计算C01号课程的学生平均成绩、

    •       SELECT AVG(degree) FROM sc WHERE cno='C01';
      

      img

  • d. 查询选修了C01号课程的学生最高分和最低分。

    •       SELECT MAX(degree) AS ‘最高分’,MIN(degree) AS ‘最低分’ FROM sc WHERE cno='C01';
      

      img

  • e. 查询学号为“2007010105”的学生的总成绩及平均成绩

    •       SELECT SUM(degree) AS 总成绩,AVG(degree) AS 平均成绩 FROM sc WHERE sno=' 2007010105';
      

      img

二、 分组筛选

使用GROUP BY子句可以将查询结果按照某一列或多列数据值进行分类,换句话说,就是对查询结果的信息进行归纳,以汇总相关数据。

  1. 语法: img img
  2. 实例:
  • a. 统计各系学生数。

    •       SELECT sdept,COUNT(*) 各系人数 FROM student GROUP BY sdept;
      

      img

  • b. 统计student表中男、女学生人数

    •       SELECT ssex,COUNT(*) 人数 FROM student GROUP BY ssex;
      

      img

  • c. 统计各系男、女生人数。

    •       SELECT sdept,ssex,COUNT(*) FROM student GROUP BY sdept,ssex;
      

      img

  • d. 统计各系女生人数。

    •       SELECT sdept,COUNT(*) 各系女生人数 FROM student WHERE ssex='女' GROUP BY sdept;
      

      img

    •       SELECT sdept,COUNT(*) FROM student GROUP BY sdept,ssex HAVING ssex='女';
      

      img

  • e. 查询选修了3门以上课程的学生学号。

    •       SELECT sno FROM sc GROUP BY sno HAVING COUNT(*)>3;
      

      img

三、 查询排序

使用ORDER BY子句可以对查询结果按照一个或多个字段进行升序(ASC)或降序(DESC)排序,默认值为升序。

  1. 语法: img img
  2. 实例:
  • a.查询选修了C02号课程的学生的学号及其成绩,查询结果按分数的降序排列。

    •       SELECT sno,degree FROM sc WHERE cno='C02' ORDER BY degree DESC;
      

      img

  • b. 查询全体学生情况,查询结果按所在系升序排列,同一系中的学生按出生日期降序排列。

    •       SELECT * FROM student ORDER BY sdept ASC, sbirthday DESC;
      

img