oracle group by和having用法
题目
oracle group by和having用法
这是我遇到的一道原题
Examine the description of the EMPLOYEES table:
EMP_ID NUMBER(4) NOT NULL LAST_
NAME VARCHAR2(30) NOT NULL
FIRST_NAME VARCHAR2(30)
DEPT_ID NUMBER(2)
JOB_CAT VARCHAR2(30)
SALARY NUMBER(8,2)
Which statement shows the department ID,minimum salary,and maximum salary paid in that
department,only if the minimum salary is less than 5000 and maximum salary is more than 15000?
然后给的解答是:SELECT dept_id,MIN(salary),MAX(salary)
FROM employees
GROUP BY dept_id
HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;
为什么这里只要group by dept_id就可以?
能通俗的为我解释一下么,group by 和having到底是怎么回事?
答案
MIN(),MAX()是聚合函数.
group by 后面是要跟着的 select 中所有不是聚合函数的字段.
ex1:select count(*) from emp; //只是查询总总数 emp这张表里一共有多少条记录 所以不用group by
ex2:select count(*) ,deptno from emp group by deptno;
// 根据deptno 分组,查到的数据就是 列出 不同部门 记录总数
select count(*) ,deptno ,comm from emp group by deptno ,comm;
// 根据deptno 和 comm 分组 以此类推
group by 后面是要跟着的 select 中所有不是聚合函数的字段 否则会报错.
having 相当于where 与where的唯一区别是 当查询语句中有 聚合函数 的时候 就不能用where 了 只能用having
举一反三
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
最新试题
热门考点
- 关于电容器与电介质的问题.
- 高次方程因式分解
- 今天是2014年6月7号用英语怎么表达?
- 满面春风,垂头丧气,目瞪口呆,健步如飞,活蹦乱跳,大摇大摆,点头哈腰,低声细语,语重心长
- 要所有和星星有关的英文名(女生)
- 两级放大电路的第一级电压放大倍数为100,即电压增益为
- 正弦定理与余弦定理的证明?
- 已知2y-3与3x+1成正比例,则y与x的函数解析式可能是( ) A.y=3x+1 B.y=32x+1 C.y=32x+2 D.y=3x+2
- 若3x^(n-1)y^(6+m)和-2x^(4+m)y^(7-n)是同类项,则m=?n=?
- 什么叫做前因后果的句子列出来