Oracle查询语句简单回顾(二)

最近项目赶着提交测试,赶着上线。问题不断作为一个新人也着实为项目组长捏了一把汗。忙了一天,都是在修改之前的模块,一天下来感觉好像没做什么,看着其他人忙的抓狂,自己总有一丝愧疚感。下班回家了,写点sql压压惊吧。

  • group function组函数
    max求最大值
    min求最小值
    avg求平均值
    count求总个数
    sum求和
    获取所有员工的平均工资并按照特定格式输出
    select to_char(avg(sal),'$9999,9999.9999') from emp
    获取左右员工的平均工资,保留两位小数
    select round(avg(sal),2) from emp;
    获取部门编号为10的员工总数
    select count(*) from emp where deptno = 10
    count获取总数,如果*为某个字段,则该字段只要不为空就算一个
    select count(ename) from emp;
    获取部门编号的总数(去除重复)
    select count(distinct deptno) from emp
    获取所有人的月薪总和
    select sum(sal) from emp;
  • group by语句
    求每个部门的平均薪水
    select avg(sal) from emp group by deptno
    求每个部门的平均薪水,带上部门编号
    select deptno,avg(sal) from emp group by deptno
    求按照部门和工作分组薪水最高的人
    select deptno,job,max(sal) from emp group by deptno,job
    求薪水最高的人的名字
    select ename from emp where sal = (select max(sal) from emp)
  • having 对分组结果筛选
    where是对单挑记录进行筛选,having是对分组结果进行筛选
    查询平均工资大于2000的部门编号及平均薪水
    select avg(sal),deptno from emp group by deptno having avg(sal) > 2000
    查询工资大于1200的员工,按照部门编号进行分组,分组后平均薪水大于1500,按照工薪倒序排列
    select ename,sal,deptno from emp where sal > 1200 group by deptno,sal,ename having avg(sal) > 1500order by avg(sal) desc

猜你喜欢

转载自blog.csdn.net/Mattscl/article/details/72668251