这是我遇到的一个面试题:
已知各城市的每月收入总值,
写出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;