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_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_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_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_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_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);
?
commit;
select area,year,sum(income) from (select id, area,to_char(month,'yyyy') year,income from t1) group by area,year order by area;