lACuL1A1LA uL Cl8L8nL1lCA S1A1lS1lCA Sl lnlC8MA1lCA LCCnCMlCA
kCILC1 S8DL
S1uuLn1 8CnClLA Anu8Ll MasLer Anul l 8aze de daLe supporL penLru afacerl Crupa 1071
rolecL semlnar S8uL
1ema propusa baza de daLe a unul operaLor de Lelefonle Descr|ere AcesL prolecL are la baza un model lnsplraL dln lumea reala a unul operaLor de Lelefonle moblle Modelul bazel unul operaLor de Lelefonle moblla pornesLe de la concepLul de cllenL un cllenL esLe deflnlL prlnLrun ld unlc o zl de facLurare nume prenume adresa de facLurare moneda sl un grup asoclaL La nlvel de cllenL nu poaLe exlsLa decaL un slngur grup asoclaL
CllenLll poL avea una sau mal mulLe subscrlpLll C subscrlpLle esLe deflnlLe prlnLrun ld unlc un numar de Lelefon un ld de cllenL un sLaLus care poaLe fl 'A' AcLlv 'S' SuspendaL sl 'l' lnchls sl un grup asoclaL
Crupul asoclaL unel subscrlpLll esLe lnoLdeauna subordonaL unul grup deflnlL la nlvel de cllenL
C subscrlpLle poaLe avea una sau mal mulLe oferLe C oferLa esLe deflnlLe prlnLrun cod de oferLa unlc un nume un cosL lunar un numar de mlnuLe lncluse o daLa de punere ln vanzare sl o daLa de scoaLere de la vanzare
La nlvel de subscrlpLle o oferLa esLe deflnlLa prln daLa de lnsLalare daLa de excludere sl un sLaLus al oferLel care poaLe fl 'A' AcLlva 'S' SuspendaLa 'l' lnchlsa SLaLusul la nlvel de oferLa nu esLe legaL de sLaLusul subscrlpLlel
enLru deflnlrerea lerarhlel unul cllenL a fosL deflnlLa o Labela de grup AsLfel un cllenL are deflnlL un grup unlc care are ca subordonaL un grupcopll deflnlL la nlvel de subscrlpLle un grupparlnLe poaLe avea unu sau mal mulLe grupurl copll un grup copll poaLe fl grup parlnLe penLru alL grup sl poaLe avea una sau mal mulLe subscrlpLll
enLru a puLea fl calculaLa facLura ln funcLle de moneda cllenLulul a fosL consLrulLa o Labela de curs de schlmb deflnlLa prln moneda sl curs de schlmb
1) Sa se afiseze toti cIientii cu moneda EUR care au subscribtii active si care au un cost Iunar mai mare de 10 euro
seIect a.cIient_id, c.subscriptie_id, sum(d.cost_Iunar) suma from cIient a, subscriptie b, oferte_subscriptie c, oferte d where a.cIient_id=b.cIient_id and b.subscriptie_id=c.subscriptie_id and c.cod_oferta=d.cod_oferta and b.status='A' and a.moneda='EUR' group by a.cIient_id, c.subscriptie_id having sum(d.cost_Iunar) >10;
2) Sa se afiseze toate oferteIe care au fost instaIate de Ia data 19.10.2011 pentru cIientii care au ziua de facturare 2.
seIect o.nume_oferta from oferte o, oferte_subscriptie os, subscriptie s, cIient c where o.cod_oferta=os.cod_oferta and os.subscriptie_id=s.subscriptie_id and s.cIient_id=c.cIient_id and c.zi_facturare=2 and os.data_instaIare >= '19-Oct-2011'
3) Sa se afiseze cIientii in functie suma de pIata care au numere de teIefon incapand cu '72'
seIect cIient_id, sum(suma) from ( seIect s.cIient_id, s.subscriptie_id, sum(o.cost_Iunar) suma from subscriptie s, oferte_subscriptie os, oferte o where s.subscriptie_id= os.subscriptie_id and os.cod_oferta= o.cod_oferta and s.no_teIefon Iike '72%' group by s.cIient_id, s.subscriptie_id order by sum(o.cost_Iunar) desc) group by cIient_id order by sum(suma) desc ;
4) Sa se afiseze toti cIientii care au oferte ce expira in perioada 1.10.2011-30.10.2011
select s.client_id, s.subscriptie_id , o.nume_oferta from subscriptie s, oferte_subscriptie os, oferte o where s.subscriptie_id= os.subscriptie_id and os.cod_oferta= o.cod_oferta and data_inchidere between ('1-Oct-2011') and ('31-Oct-2011')
5) Sa se afiseze toti cIientii care au oferta Abonament SimpIu si au status active
select s.client_id, s.subscriptie_id , o.nume_oferta from subscriptie s, oferte_subscriptie os, oferte o where s.subscriptie_id= os.subscriptie_id and os.cod_oferta= o.cod_oferta and o.nume_oferta='Abonament Simplu' and s.status='S' ;
6) Sa se afiseze sumeIe de pIata in functie de ziua de pIata
select zi_facturare, sum(suma) from ( select a.zi_facturare, s.subscriptie_id, sum(o.cost_lunar) suma from subscriptie s, oferte_subscriptie os, oferte o, client a where s.subscriptie_id= os.subscriptie_id and a.client_id= s.client_id and os.cod_oferta= o.cod_oferta group by s.client_id, s.subscriptie_id, a.zi_facturare order by sum(o.cost_lunar) desc) group by zi_facturare ;
7) Sa se afiseze cate grupuri copiI are grupuI asociat cIientuIui 100000001;
seIect IeveI, count(grup_id_parinte) from grup connect by grup_id_copiI=prior grup_id_parinte start with grup_id_parinte = (seIect grup_id from cIient where cIient_id=100000001) group by IeveI;
8) Sa se afiseze toti cIientii care au oferta de tip Abonament si care au costuI Iunar mai mare de 5
select s.client_id, s.subscriptie_id , o.nume_oferta, o.cost_lunar from subscriptie s, oferte_subscriptie os, oferte o where s.subscriptie_id= os.subscriptie_id and os.cod_oferta= o.cod_oferta and o.nume_oferta like 'Abonament%' and o.cost_lunar>5 ;
9) Sa se adauge coloanele numar_sms, numar_MB la tabela oferte.
alter table oferte add ( numar_sms number(5), numar_MB number(5) );
10) Folositi comanda MERGE pentru a completa coloanele numar_sms si numar_mb pentru ofertele eligibile:
MERGE NTO oferte a USNG oferte b ON (a.cod_oferta=b.cod_oferta) when matched then update set numar_sms=1 where a.nume_oferta like '%SMS%';
MERGE NTO oferte a USNG oferte b ON (a.cod_oferta=b.cod_oferta) when matched then update set numar_sms=1 where a.nume_oferta like '%internet%';