oracle之子句使用

来源:互联网 发布:淘宝床单被罩四件套 编辑:程序博客网 时间:2024/04/28 12:44

1.group by

分组查询数据

seleclt column,分组函数(column) from table group by 分组表达式 order by 排序字段;

分组函数详解:http://blog.csdn.net/yhl_jxy/article/details/50705605

对group by的使用说明:

(1)如果select中的column不包含在分组函数中,必须在group by表达式中,否则报错。

(2)包含在group by 中的字段,可以选择性在select中出现。

(3)where中可以增加查询限制。

(4)order by 排序处理。

create table mytest(  id number(11) primary key,  name varchar2(10),  age number(3))insert into mytest values(1,'one',18);insert into mytest values(2,'two',18);insert into mytest values(3,'three',22);commit;select avg(age),max(avg(age)),min(age),sum(age),count(id) from mytest where age is not null group by age order by id;select avg(age) from mytest where age is not null group by age order by age;select id,age from mytest group by id,age;--多个字段分组select id,age,avg(age) from mytest group by id,age;

注意:max(avg(age))分组函数最多只能嵌套两层,多余两层将报墙体太深的错误。

2.group by错误用法

  (1)如果没有group by分组,select中不允许单个字段和分组函数混合使用

       select id,avg(age) from mytest;--报错

  (2)不允许在where后使用分组函数

  select avg(age) from mytest where age is not null   and avg(age) > 10--报错处:此处不允许使用分组函数   group by age order by age;

3.having字句用于过滤分组,也就是在where后使用分组函数作为过滤条件

 select avg(age) from mytest  where age is not null group by age  having avg(age) > 10 order by age;


0 0