日期:2014-05-16  浏览次数:20544 次

oracle 分类汇总

这是我遇到的一个面试题:

已知各城市的每月收入总值,

写出sql语句,查出各地点的年收入总值。

?

?

-------------------------------------------------先回顾一下oracle的基本知识

set serveroutput on --打开输出

?

--先删除表,再创建表

begin

? execute immediate 'drop table t1';

? exception when others then

? ? dbms_output.put_line('INFO not exit table t1');

end;

create table t1 (

id number(4),

area varchar2(10) not null,

month date not null,

income number(10,2) not null,

constraint t1_pk primary key(id)

);

?

--先删除序列,再创建序列

begin

? execute immediate 'drop sequence seq1';

? exception when others then

? ? dbms_output.put_line('not exit sequence');

end;

create sequence seq1 start with 1 increment by 1;

?

--重置sequence初始值?

declare

? n ? ? ?number(10);

? tsql ? varchar2(100);

begin

? select ? seq1.nextval ? into ? n ? from ? dual;

? n:=-(n-1);

? tsql:= 'alter ? sequence ? seq1 ? increment ? by '|| ? n;

? execute ? immediate ? tsql;

? select ? seq1.nextval ? into ? n ? from ? dual;

? tsql:= 'alter ? sequence ? seq1 ? increment ? by ? 1 ';

? execute ? immediate ? tsql;

end;

?

?

insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1);

insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1);

insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1);

insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1);

insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1);

insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy- mm'),seq1.currval-1),2000+seq1.currval-1);

insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1);

insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1);

insert into t1 values(seq1.nextval-1,'重庆',add_months(to_date('2009-12','yyyy-mm'),seq1.currval-1),2000+seq1.currval-1);

insert into t1 values(seq1.nextval-1,'重庆',add