Sunteți pe pagina 1din 3

--1.

Sã se scrie comanda SQL pentru crearea tabelei tMediere (cu


constrângeri referitoare la cheia primarã si cheia strãinã)
create database dbAgentieHoteliera
use dbAgentieHoteliera
go

create table tAgentii


(
CodAgentie char(10) primary key,
AnInfiintare smalldatetime,
CifraAfaceri numeric(12,2),
Localitate varchar(20),
Cotatie char(10)
)
create table tHoteluri
(
CodHotel char(10) primary key,
Denumire varchar(20) not null,
Localitate varchar(20),
NrStele int check (NrStele between 1 and 7),
Pret numeric (7,2)
)
create table tMediere
(
IdMediere char(10) primary key,
CodAgentie char(10) foreign key references tAgentii(CodAgentie),
CodHotel char(10) foreign key references tHoteluri(CodHotel),
Data smalldatetime default getdate(),
Durata numeric(2),
NrLocuriRezervate numeric(2)
)

--2. Sã se scrie comanda SQL pentru adaugarea unei inregistrari în tabela


tHoteluri
insert into tHoteluri values('h4','Crown Platza','Bucuresti',5,1200)

--3. Sã se scrie comanda SQL pentru diminuarea cu 10% a preþului pentru


hotelurile din localitatea Costineºti
update tHoteluri
set Pret=Pret*0.9
where Localitate='Costinesti'
--4. Sã se scrie comanda SQL pentru afiºarea numãrului de hoteluri din
fiecare localitate, în ordinea alfabeticã a localitãþilor
select Localitate, COUNT(CodHotel) as [Numar Hoteluri]
from tHoteluri
group by Localitate
order by Localitate asc

--5. Sã se scrie comanda SQL pentru afiºarea urmatoarelor informaþii:


CodAgentie, Localitate agenþie, CodHotel, Denumire, Pret, Data, Durata,
NrLocuriRezervate, ValoareLocuriRezervate,
-- unde ValoareLocuriRezervate= NrLocuriRezervate* Durata*Pret
select A.CodAgentie, A.Localitate, C.CodHotel, Denumire, Pret, Data,
Durata, NrLocuriRezervate, NrLocuriRezervate*Durata*Pret as
ValoareLocuriRezervate
from tAgentii as A inner join tMediere as B on
A.CodAgentie=B.CodAgentie
inner join tHoteluri as C on B.CodHotel=C.CodHotel

--6. Sã se scrie comanda SQL pentru afiºarea localitãþilor în care existã


agenþii ce au rezervate locuri pentru hotelul cu codul “Belvedere”
select Localitate
from tAgentii as A inner join tMediere as B
on A.CodAgentie=B.CodAgentie
where CodHotel='Belvedere'

--7. Sã se scrie comanda SQL pentru afiºarea urmatoarelor informatii:


--CodHotel, Denumire, Numar total de locuri rezervate
select A.CodHotel, Denumire,SUM(NrLocuriRezervate) as [Numar total de
locuri rezervate]
from tHoteluri as A inner join tMediere as B
on A.CodHotel=B.CodHotel
group by A.CodHotel, Denumire

--8. Sã se scrie comanda SQL pentru afiºarea hotelurilor cu pret mai mare
decât pretul mediu al hotelurilor din localitatea Mamaia
select CodHotel, Denumire from tHoteluri
where Pret>(select AVG(Pret) from tHoteluri
where Localitate='Mamaia')
--9. Sã se scrie comanda SQL pentru afiºarea hotelurilor care nu au locuri
rezervate prin agenþii
select * from tHoteluri as A
where not exists (select * from tMediere
where A.CodHotel=CodHotel)

--10. Sã se scrie comanda SQL pentru afiºarea hotelurilor care sunt din
aceeaºi localitate cu hotelul cu denumirea “Regent”
select * from tHoteluri as A
where Localitate=(select Localitate from tHoteluri
where Denumire='Regent')
and Denumire!='Regent'

--11. Sã se scrie o funcþie pentru determinarea valorii locurilor rezervate


de o agentie identificata prin CodAgentie la un hotel identificat prin
CodHotel, utilizand formula
-- ValoareLocuriRezervate=∑ NrLocuriRezervate* Durata*Pret
create function ValoareLocuriRezervate(@CodAgentie char(10),@CodHotel
char(10) )
returns int
as
begin
declare @Valoare int
select @Valoare=sum(Pret*Durata*NrLocuriRezervate)
from tHoteluri as A inner join tMediere as B
on A.CodHotel=B.CodHotel
where B.CodAgentie=@CodAgentie
and B.CodHotel=@CodHotel
return @Valoare
end
print dbo.ValoareLocuriRezervate('a1','Belvedere')

S-ar putea să vă placă și