迷踪之国全集epub:5-3-2

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 02:56:14


5.3.2 SELECT语句完整的结构
1.聚合函数
(1)SQL提供的聚合函数
  COUNT(*): 计算元组的个数,用DISTINCT消去重复行
  COUNT(<列名>):对一列中的值计算个数,用DISTINCT消去重复行
  SUM(<列名>): 求某一列值的总和(此列的值必须是数值型)
  AVG(<列名>): 求某一列值的平均值(此列的值必须是数值型)
  MAX(<列名>): 求某一列值的最大值
  MIN(<列名>): 求某一列值的最小值
(2)求计算机系学生的平均年龄
  SELECT AVG(Age)
  FROM Student
  WHERE Dept='CS'
(3)求S3学生的总分和平均分
  SELECT SUM(Grade),AVG(Grade)
  FROM Sc
  WHERE Sno='S3''
(4)求计算机系的学生总数(下面是2种等价方法)
  SELECT COUNT(Sno) FROM Student WHERE Dept='CS'
  SELECT COUNT(*) FROM Student WHERE Dept='CS'
(5)查询共有几个系
  SELECT COUNT (*) FROM Student
  SELECT COUNT (Dept) FROM Student
  SELECT COUNT (DISTINCT Dept) FROM Student
(6)求课程C1的最高分和最低分以及高低分之间的差距
  SELECT MAX(Grade),MIN(Grade),MAX(Grade)-MIN(Grade)
  FROM Sc
  WHERE Cno='C1'
2.SELECT语句完整的句法
(1)SELECT语句的完整句法
SELECT <目标表的列名或列表达式序列>
FROM <基本表名和(或)视图序列>
[ WHERE <行条件表达式> ]
[ GROUP BY <列名序列>
[ HAVING <组条件表达式> ] ]
[ ORDER BY <列名[ ASC|DESC ]>,…] (2)SQL语句的执行过程
  读取FROM子句中基本表、视图的数据,执行笛卡尔积操作
  选取满足WHERE子句中给出的条件表达式的元组(行条件子句)
  按GROUP子句中指定列的值分组(分组子句),同时提取满足HAVING子句中组条件表达式的那些组(组条件子句)
  按SELECT子句中给出的列名或列表达式求值输出
  ORDER子句对输出的目标表进行排序(排序子句)。按附加说明ASC升序排列,或按DESC降序排列
(3)查询各个课程的选修人数
  SELECT Cno,COUNT(*) FROM Sc GROUP BY Cno
(4)查询出至少选修了4门课程的学号和门数
  SELECT Sno,COUNT(*) FROM Sc GROUP BY Sno
  SELECT Sno,COUNT(Sno) FROM Sc GROUP BY Sno HAVING COUNT(Sno)>=4
(5)求选课在4门以上的平均成绩,不统计不及格的课程,按降序排列平均成绩(下面是2种等价方法,区别在于下划线标识的句子)
SELECT Sno,AVG(G) Average
FROM Sc
WHERE G>=60
GROUP BY Sno
HAVING COUNT(*)>=4
ORDER BY Average DESC
SELECT Sno,AVG(G)
FROM Sc
WHERE G>=60
GROUP BY Sno
HAVING COUNT(*)>=4
ORDER BY 2 DESC