********************使用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