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
输入一个集合,输出一个值。
avg,sum #只能用于数值
min,max,count #可以用于除数值之外。
count #是用来计数的,非NULL记录+1,反之不积累。
#AVG例子:
#注意:相同数据不去重复。
select avg(salary)
from instructor
where dept_name = 'Biology'
#加distinct去重复:
select 聚集函数(distinct 属性)
select count (*) 里面不能使用 distinct
distinct 在 max 和 min 中一样。
除了 count(*)外所有的聚集函数都忽略输入集合中的空值
avg , max, min 返回空值 count 输入空值,返回0
先按照系分成多个组,每个组求一个工资平均值
-- 注意:出现在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
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