Oracle笔记收集整理(1)(二)
-
2013-07-30 10:23:31
=========================================
排序:
order by 列名, ...
可以作用在:数字、日期、字符串。
可以使用列名,表达式,别名,序号(表示select中的第几个列)
升序、降列
按一个列排列,按多个列排序
当order by所在的列中有null,会:
升序时,null的在下面。
降序时,null的在上面。
我们希望,不管升序还是降序,null值的始终在下面
order by 列名, ...
可以作用在:数字、日期、字符串。
可以使用列名,表达式,别名,序号(表示select中的第几个列)
升序、降列
按一个列排列,按多个列排序
当order by所在的列中有null,会:
升序时,null的在下面。
降序时,null的在上面。
我们希望,不管升序还是降序,null值的始终在下面
方式一:SQL> select * from emp order by comm desc nulls last; 方式二: select empno, ename, job, hiredate, sal, nvl(comm, 0) from emp order by 6 desc =====================================================
1,组函数 select max(sal) 最高工资, min(sal) 最低工资, avg(sal) 平均工资, sum(sal) 所有员工的工资和, count(sal) 领工资的员工数量 from emp; 2,组函数对null的处理 例,查询所有员工的平均奖金(有人的奖金为null) select sum(comm)/count(*) 平均奖金 from emp 组函数会自动过滤掉null值。 在使用avg()时要注意处理null值: select avg( nvl(comm, 0) ) from emp; 函数可以嵌套使用
3,分组
Group by,写在FROM后,如果有WHERE,就在WHERE后面。
查询的列一定要是:
在group by中出现的列(在Select中不一定全写上)
或是使用组函数
按一个列分组
按多个列分组
参与分组的多个列有一个不相同就是不同的组。
4,分组结果过滤
Having,是分完组后再进行过滤,只显示符合条件的结果。
在Group by与Having中都不可以使用别名。
与Where的区别
Having是是分完组后再进行过滤。
Where是先过滤,再进行分组操作。
如果可以,尽量写Where条件,不写Having。
Group by,写在FROM后,如果有WHERE,就在WHERE后面。
查询的列一定要是:
在group by中出现的列(在Select中不一定全写上)
或是使用组函数
按一个列分组
按多个列分组
参与分组的多个列有一个不相同就是不同的组。
4,分组结果过滤
Having,是分完组后再进行过滤,只显示符合条件的结果。
在Group by与Having中都不可以使用别名。
与Where的区别
Having是是分完组后再进行过滤。
Where是先过滤,再进行分组操作。
如果可以,尽量写Where条件,不写Having。
Select ... From ... Where ... Group by ... Having ... Order by ... ================================================