oracl sql查询

group by 有时候就是为了使用下面的分组函数
  count() avg() max(); // 一般针对于数字的应用上
  min(); sum()
  如果程序中使用了分组函数,则有两种可以使用的情况:
  1。程序中存在了group by ,并制定了分组条件,这样可以将分组条件一起查询出来
  2。如果不使用group by的话,则只能单独使用分组函数
  所以: select deptno,count(empno) from emp; //错误:不是单组分组函数
  改:select deptno,count(empno) from emp group by deptno;
  select deptno,ename,count(empno)from emp group by deptno; //错误:不是一个group by表达式
  总结就是: group by 和组函数都将赋予 字段组的概念,那么在这种情况下由group by 修饰的
  字段和由组函数修饰的字段都是组字段,而前面的不是组字段,当然会出现错误
  where group by having order by -----wgho ---我走好
  要求显示出平均工资大于2000的部门编号和平均工资。
  select deptno,AVG(sal)
  from emp
  where AVG(sal) > 2000
  group by deptno ; //第三行出现错误: 此处不允许使用分组函数
  分组函数只能在分组中使用,不允许在where语句之中出现,我们只能使用分组过滤
  select deptno,AVG(sal)
  from emp
  group by deptno HAVING AVG(sal) > 2000;
  显示非销售人员工作名称以及从事同一工作雇员的月工资的总和,
  并且要满足从事同一工作的雇员的月工资合计
  大于$5000,输出结果按月工资的合计升序排列
  emp{empno,ename,job,mgr(雇员的领导的编号),hiredate,sal,comm,deptno}
  dept{deptno,dname,loc}
  salgrade{grade,losal,hisal}
  bonus{ename,job,sal,comm}
  这么长的语句:分解
  显示非销售人员工作名称:
  select job from emp where job <>'SALESMAN'
  。。。以及从事同一工作雇员的月工资的总和,
  select job,SUM(sal) from emp
  where job <>'SALESMAN'
  group by job
  。。。并且要满足从事同一工作的雇员的月工资合计大于$5000
  select job,SUM(sal) from emp
  where job <>'SALESMAN'
  group by job HAVING SUM(sal) > 5000
  。。。输出结果按月工资的合计升序排列
  select job,SUM(sal) su from emp
  where job <>'SALESMAN'
  group by job HAVING SUM(sal) > 5000
  order by su; //使用别名不叫分组函数,可以使用
  分组函数可以嵌套使用,但是在组函数嵌套使用的时候不能再出现分组条件的查询语句
  求出平均工资最高的部门工资
  select deptno,MAX(AVG(sal))
  from emp
  group by deptno; //错误,不是单组分组函数,理解:查询的东西一个是一层组函数,一个是两层组函数,显然他们不是同一级别,当然不能一起使用
  改成:select MAX(AVG(sal))
  from emp

  group by deptno;


查询表中 某个字段 存在的相同的数据的信息,查询语句如下:

        select  rmx.reagent_num , count(rmx.reagent_num) xx 
        from reag_info_mx rmx  group by rmx.reagent_num  having count(rmx.reagent_num) > 1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值