********************使用order by 进行排序*************************
需求1:
--查询所有部门信息 按部门编号降序排列
select * from dept order by deptno desc
写了order by deptno 以后 如果没有指定升序还是降序 默认是升序
相当于写上 asc 降序是 desc
需求2:
--查询所有的员工的信息 根据薪水升序排列
select * from emp order by sal
需求3:
---查询员工的姓名、薪水、部门编号 先按部门编号升序、部门编号相同的按薪水降序
select ename,sal,deptno from emp order by deptno asc,sal desc
需求4:
--查询姓名第二个字母不是A的,并且月薪大于1000的员工的
--姓名和年薪(不包括奖金),按照工资降序排序.
select ename,sal*12 + nvl(comm,0) as 年薪 from emp where
ename not like '_A%' and sal>1000
order by sal desc
oracle中的函数类似于java中的方法,可以提供某些功能..
特点: oracle中函数必须有返回值!
分类:
1. 单行函数
一行输入 一行输出
2. 组函数
多行输入 一行输出
*************************单行函数*****************************
一行输入 一行输出
*****************组函数(也叫做聚合函数)*************************
多行输入 一行输出
1. 最大值 max
2. 最小值 min
3. 平均值 avg
4. 求和 sum
5. 求总共有多少条记录
select count(*) from emp where deptno=10
--需求1:求每个部门的平均薪水
select deptno,avg(sal) from emp group by deptno
小技巧:
1.一说每就需要分组,而且每后面的条件就是分组的条件
2. 只要使用 5个组函数其中之一,都需要分组
group by 分组的规则
一旦使用了group by 进行分组, select 后面的字段 要么是5个组函数
之一、要么是分组的条件,不能写其他字段
使用having 对分组后的数据进行过滤
对记录进行过滤 使用where,分组后对分组后的数据进行过滤 使用having
select 语句总结:
select * from emp
where 条件
group by deptno
having //对分组进行过滤
order by avg(sal) desc