Class_2复习
代码语言:javascript复制select b.ENAME
from EMP a,EMP b
where a.mgr=b.empno
select empno from emp where deptno = 20
intersect
select empno from emp where deptno = 20
Class_3
聚集函数 Aggregate Functions
avg min max sum count
输入一个集合,输出一个值。
代码语言:javascript复制avg,sum #只能用于数值
min,max,count #可以用于除数值之外。
count #是用来计数的,非NULL记录 1,反之不积累。
代码语言:javascript复制#AVG例子:
#注意:相同数据不去重复。
select avg(salary)
from instructor
where dept_name = 'Biology'
代码语言:javascript复制#加distinct去重复:
select 聚集函数(distinct 属性)
注意:
代码语言:javascript复制select count (*) 里面不能使用 distinct
distinct 在 max 和 min 中一样。
除了 count(*)外所有的聚集函数都忽略输入集合中的空值
如果输入的集合只有空值
avg , max, min 返回空值 count 输入空值,返回0
分组:
举例:求多个系的工资平均值
先按照系分成多个组,每个组求一个工资平均值
代码语言:javascript复制-- 注意:出现在select子句中但没有被聚集的属性必须出现在 group by 子句中
select 属性1,属性2,聚集函数(属性)
from 表
group by 属性1,属性2(按照属性1,属性2分组)
-- 注意:筛选条件:分组后写条件用having,不分组用where
select 属性1,属性2,聚集函数(属性)
from 表
group by 属性1,属性2(按照属性1,属性2分组)
having 条件
这样先通过 having 过滤元组,然后再分组。
计算机操作顺序: From where Group BY Having Select Order Bya
练习题:
代码语言:javascript复制select count(数字)
from instructor
本质上就是数行数
select dept_name,max(budget)
from department
group by dept_name
课后练习:
select course_id,count(ID)
from takes
group by course_id
select ID,count(course_id)
from takes
group by ID
having count(course_Id)>=3