You are on page 1of 11

ACADEMIA DE STUDII ECUNUMICE

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

Mal [os scheama concepLuala





Secventa SQL
creaLe Lable curs_schlmb
(
moneda char (3) prlmary key
curs number(42)
)

creaLe Lable cllenL
(
cllenL_ld number(9) prlmary key
daLa daLe defaulL sysdaLe
zl_facLurare number (2)
nume varchar2(20)
prenume varchar2(20)
adresa_facLura varchar2(100)
moneda char(3) reference curs_schlmb(moneda)
grup_ld number(9)
)


creaLe Lable subscrlpLle
(
subscrlpLle_ld number(9) prlmary key
no_Lelefon number(10)
cllenL_ld number(9) references cllenL (cllenL_ld)
sLaLus char(1) consLralnL ck_sLaLus check (sLaLus ln (A Sl))
daLa daLe defaulL sysdaLe
grup_ld number(9)
)


creaLe Lable oferLe
(
cod_oferLa number(9) prlmary key
nume_oferLa varchar(20)
cosL_lunar number (32)
numar_mlnuLe number (3)
daLa_vanzare daLe defaulL sysdaLe
daLa_lnchldere daLe
)

creaLe Lable oferLe_subscrlpLle
(
subscrlpLle_ld number(9) references subscrlpLle(subscrlpLle_ld)
cod_oferLa number(9) references oferLe(cod_oferLa)
daLa_lnsLalare daLe uLlAuL1 sysdaLe
daLa_explrare daLe
sLaLus_oferLa char(1) consLralnL ck_sLaLus_oferLa check (sLaLus_oferLa ln (A Sl))
)

creaLe Lable grup
(
grup_ld number(9) prlmary key
daLa daLe defaulL sysdaLe
grup_ld_copll number(9) reference subscrlpLle(grup_ld)
grup_ld_parlnLe number(9) reference cllenL(grup_ld)
)



erinte

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%';

You might also like