数据库复习(3): 聚集与分组查询

聚集函数

聚集函数用于分析数据, 常见聚集函数有:

  • COUNT() 计数
  • MIN() 最小值(包括日期,数值等)
  • MAX() 最大值
  • AVG() 平均数
  • SUM() 求和

列名前加DESTINCT关键字时只计算不重复的值
列名为*时指所有列

分组

使用分组, 可以将数据分为几组分别做聚集(分别计数, 分别求平均等)

SELECT ...
FROM ...
GROUP BY 列名
HAVING 条件

GROUP BY根据给定列名中元素的值, 每个不同的值作为一个分组.
HAVING子句用来过滤分组(与之相对应的, WHERE用来过滤行, 两者不能混淆).
HAVING子句尽量只用于聚合函数

多表分组查询

SELECT中的字段要么是聚集函数, 要么在GROUP BY中, 否则会出错.

--TODO 待分析
--统计每门课程的选课人数和最高成绩。
SELECT Cname, COUNT(*) AS '人数', MAX(Grade) AS '最高分'
FROM SC a, Course b
WHERE a.Cno=b.Cno
GROUP BY Cname;

发表评论

电子邮件地址不会被公开。 必填项已用*标注