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