oracle分组查询

分组函数

在分组函数中,如果有一个查找项分组,其他项必须也分组,比如下面的语句会报错,因为sal分组了,而ename没有分组:

1.显示工资最高的员工:

2.显示所有员工的平均工资:

2.1使用系统函数:

2.2自定义计算:

3.显示工资高于平均工资的员工信息:

对查询结果进行分组统计:

4.查询每个部门的最高工资和平均工资:

5.显示每个部门的每种岗位的平均工资与最高工资:

6.显示平均工资低于2000的部门号和它的平均工资:

对数据分组的总结

1 分组函数只能出现在选择列表、having、order by子句中(不能出现在where中)

2 如果在select语句中同时包含有group by, having, order by 那么它们的顺序是group by, having, order by

3 在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须有一个出现在group by 子句中,否则就会出错。

如SELECT deptno, AVG(sal), MAX(sal) FROM emp GROUP by deptno HAVING AVG(sal) < 2000;

这里deptno就一定要出现在group by 中

时间: 2024-10-14 15:23:11

oracle分组查询的相关文章

ORACLE分组查询和统计等

select flow_id,rw from (select t.flow_id ,rownum as rw from apex_030200.wwv_flow_list_templates t)  where rw >= 5 1.rownum只能用<如果使用>加别名 2.子查询引用只能在查询出的结果中引用,比如子查询没有查出flow_id,外层不能用,另外外层不能引用内层的t 3.薪水前三名,内层查出薪水 order desc的虚表外层使用rownum<3 4.merge可以实现

oracle 分组查询 子查询 统计查询 FROM加子查询临时表 查询高于平均工资 示例代码

---求平均工资 SELECT AVG(sal) FROM emp; -----------大于平均工资 SELECT e.ename,e.job,e.sal FROM emp e WHERE e.sal>(SELECT AVG(sal) FROM emp) -------- --e领导编号=m雇员编号 --emp雇员表,dept部门表 SELECT e.ename 雇员姓名,e.job 雇员职位,e.sal 雇员工资, m.ename 领导姓名,m.job 领导职位, d.dname 部门名称

oracle 分组查询

球员信息表 T: 球员id      球员名称      所在球队 12344       麦迪             火箭 34323       科比             活人 球员赛季得分表A,字段如下: id         球员id         赛季         场均得分 01         34323          2013           34 02         12344          2013           12 03         43

Oracle和MySQL分组查询GROUP BY

Oracle和MySQL分组查询GROUP BY 真题1.Oracle和MySQL中的分组(GROUP BY)有什么区别? 答案:Oracle对于GROUP BY是严格的,所有要SELECT出来的字段必须在GROUP BY后边出现,否则会报错:“ORA-00979: not a GROUP BY expression”.而MySQL则不同,如果SELECT出来的字段在GROUP BY后面没有出现,那么会随机取出一个值,而这样查询出来的数据不准确,语义也不明确.所以,作者建议在写SQL语句的时候,

oracle解决多表关联分组查询问题

做了一个功能需要分组查询,同时查询A表分组查询的ID需要关联B表的数据,本来想两个表关联查询,但是报group by 语法不正确.所以做了以下修改. select count(*), cindexid,(select vindexcode from comindex where pk_index =cindexid) as vindexcode ,iquesttype from rqt_examquest where pk_examquest in (    select cexamquesti

oracle中关联查询、分组查询

高级查询 1.关联查询作用:可以跨越多表查询 --查询出员工的名字和他所在部门的的名字//古老的写法select first_name,name from s_emp,s_dept where s_emp.dept_id = s_dept.id;//现在的写法select e.first_name,s.name from s_emp e join s_dept s on e.dept_id = s.id;语法:select 列,列,列 from 表1 join 表2on 表1外键=表2主键 案例

Oracle 高级查询1 关联查询 分组查询

高级查询 1.关联查询作用:可以跨越多表查询 --查询出员工的名字和他所在部门的的名字 语法:select 列,列,列 from 表1 join 表2on 表1外键=表2主键 2.外联接 左外联[left outer join] 以关联的左边为准,即使右边没有与之匹配的记录,则左边的记录也要 出现在结果集中,右边全部以NULL值显示. 右外联[right outer join] 以关联的右边为准,即使左边没有与之匹配的记录,则右边的记录也要 出现在结果集中,左边全部以NULL值显示. 3分组查询

Oracle的查询-分组查询

--查询出每个部门的平均工资 select e.deptno,avg(e.sal) from emp e group by e.deptno; 分组查询中,出现在 group by 后面的原始列,才能出现在 select 后面 没有出现在 group by 后面的原始列 ,想在 select 后边出现必须加上聚合函数 --查询出平均工资高于2000的部门 select e.deptno,avg(e.sal) from emp e group by e.deptno having avg(e.sa

(四)Oracle条件查询,分页查询

1. SQL(基础查询) 1.1基础查询 1.1.1. 使用LIKE条件(模糊查询) 当用户在执行查询时,不能完全确定某些信息的查询条件,或者只知道信息的一部分,可以借助LIKE来实现模糊查询.LIKE需要借助两个通配符: %:表示0到多个字符 _:标识单个字符 这两个通配符可以配合使用,构造灵活的匹配条件.例如查询职员姓名中第二个字符是'A'的员工信息: SELECT ename, job FROM emp WHERE ename LIKE '_A%'; 1.1.2. 使用IN和NOT IN