17,140
社区成员




create table CUSTOMERS --客户表
(id number(8) primary key,taaccoid char(12),name varchar2(100),birthdate number(8),certno varchar2(20),province number(8),age number(4));
create table PROVINCE --省份表
(id number(8) primary key,name varchar2(100));
create table TA_SHARE --基金份额表
(taaccoid char(12),fundcode char(6),curshare number(16,2));
create table PRODUCTS --基金产品表
(fundcode char(6),fundname varchar2(100));
insert into customers values (1, '111000051346', '李惠萍', 19780304, '430111197803043000', 2, 32);
insert into customers values (2, '111000051347', '李abcd', 19780304, '430111197803043000', 1, 32);
insert into customers values (3, '111000051348', 'aaaa', 19780304, '430111197803043000', 1, 56);
insert into customers values (4, '111000051349', 'bbbb', 19780304, '430111197803043000', 2, 15);
insert into province values (1, '北京市');
insert into province values (2, '上海市');
insert into ta_share values ('111000051346', '110001', 1234);
insert into ta_share values ('111000051346', '110002', 5201);
insert into ta_share values ('111000051347', '110001', 1000);
insert into ta_share values ('111000051348', '110001', 23);
insert into ta_share values ('111000051348', '110002', 11);
insert into ta_share values ('111000051349', '110001', 44);
insert into products values ('110001','产品1');
insert into products values ('110002','产品2');
commit;
create index idx_customer_tacct on CUSTOMERS(taaccoid);
create index idx_customer_PROVINCE on CUSTOMERS(PROVINCE);
create index idx_ta_share_tacct on ta_share(taaccoid);
CREATE index idx_products_fcode on products(fundcode);
select PV.NAME, PS.FUNDNAME,
count(case when ct.age between 1 and 20 then 1 else null end) "1~20岁",
count(case when ct.age between 21 and 40 then 1 else null end) "21~40岁",
count(case when ct.age > 41 then 1 else null end) "41岁以上",
sum(ts.curshare)
from CUSTOMERS ct, PROVINCE pv, TA_SHARE ts, PRODUCTS ps
where pv.id = ct.province
and ct.taaccoid = TS.TAACCOID
and TS.FUNDCODE = PS.FUNDCODE
group by PV.NAME, PS.FUNDNAME
order by 1, 2;
NAME FUNDNAME 1~20岁 21~40岁 41岁以上 SUM(TS.CURSHARE)
---------- ---------- ---------- ---------- ---------- ----------------
上海市 产品1 1 1 0 1278
上海市 产品2 0 1 0 5201
北京市 产品1 0 1 1 1023
北京市 产品2 0 0 1 11
select c.province, ta.fundcode,
decode(sign(age-20),-1,'小于等于20',0,'小于等于20',decode(sign(age-40),-1,'大于20小于等于40',0,'大于20小于等于40',1,'41以上')) 年龄段,
count(decode(sign(age-20),-1,'小于等于20',0,'小于等于20',decode(sign(age-40),-1,'大于20小于等于40',0,'大于20小于等于40',1,'41以上')))该年龄段人数 ,
sum(ta.curshare)
from customers c join ta_share ta on c.taaccoid=ta.taaccoid
join products p on p.fundcode=ta.fundcode
join province pv on pv.id=c.province
group by c.province,ta.fundcode,decode(sign(age-20),-1,'小于等于20',0,'小于等于20',decode(sign(age-40),-1,'大于20小于等于40',0,'大于20小于等于40',1,'41以上'))
order by c.province,ta.fundcode