Sunteți pe pagina 1din 10

MINISTERUL EDUCAȚIEI AL REPUBLICII MOLDOVA

UNIVERSITATEA TEHNICĂ A MOLDOVEI

FACULTATEA CALCULATOARE, INFORMATICĂ ȘI MICROELECTRONICĂ

DEPARTAMENULT INGINERIE SOFTWARE ȘI AUTOMATICĂ

LUCRARE DE LABORATOR NR.4


Disciplina : Baze de date
Tema : Instrucțiunea SELECT TRANSACT-SQL

A elaborat : st.gr.TI-171 f/r , Florea Cristina

A verificat : prof.univ. Saranciuc Dorian

2020
Pentru baza de date “Hotel” au fost scrise următoarele interogări :

--1. Lista clientilor ordonat după nume și prenume


select c.nume
,c.prenume
,c.data_nastere
,c.numar_telefon
,c.email
from dbo.clienti c
order by c.nume, c.prenume

Setul dinamic :

--2. Top 3 cele mai populare hoteluri

select top 3 h.denumirea


,h.categorie
from dbo.hotel h
order by h.categorie desc

Setul dinamic :
--3. Clientii care s-au nascut in perioada 2000 – prezent

select c.nume
,c.prenume
,c.data_nastere
,c.numar_telefon
,c.email
from dbo.clienti c
where c.data_nastere between ‘01.01.2000’ and sysdatetime()

Setul dinamic :

--4. De calculat varsta clientilor in ani / luni

select c.nume
,c.prenume
,c.data_nastere
,c.numar_telefon
,c.email
,datediff(year,c.data_nastere,sysdatetime()) ani
,datediff(month,c.data_nastere,sysdatetime()) luni
from dbo.clienti c

--5. Cate persoane sunt cu acelasi nume

select c.nume
,count(*) nr
from dbo.clienti c
group by c.nume

Setul dinamic:
--6. Cate adrese sunt in fiecare oras

select l.orasul
,count(a.id_adresa) nr_adrese
from dbo.localitate l
,dbo.adrese a
where a.id_localitate = l.id_localitate
group by l.orasul

Setul dinamic:

--7. Datele despre hotelurile care NU sunt din chisinau

select l.orasul
,a.strada
,a.nr_strada
,h.*
from dbo.localitate l
,dbo.adrese a
,dbo.hotel h
where l.id_localitate = a.id_localitate
and a.id_adresa = h.id_adresa
and l.orasul not like ‘Chisinau’

Setul dinamic :
--8. De afisat informatia despre comenzile facute la hotelurile din
Drochia , Cricova

select l.orasul
,l.id_localitate
,a.strada
,h.denumirea
,c.etaj
,c.nr_camera
,c.data_rezervare
,c.data_sosire
,c.zile_rezervate
,c.pret_zi
from dbo.comanda c
,dbo.hotel h
,dbo.adrese a
,dbo.localitate l
where c.id_hotel = h.id_hotel
and h.id_adresa = a.id_adresa
and a.id_localitate = l.id_localitate
and l.id_localitate in (4,5)

Setul dinamic :

--9. De afisat informatia despre clienti si comanda la care data


rezervare difera de data sosirei

select cl.nume
,cl.prenume
,cl.data_nastere
,cl.numar_telefon
,cl.email
,cm.etaj
,cm.nr_camera
,cm.data_rezervare
,cm.data_sosire
,cm.zile_rezervate
,cm.pret_zi
from dbo.clienti cl
,dbo.comanda cm
where cl.id_client = cm.id_client
and cm.data_rezervare != cm.data_sosire

Setul dinamic :
--10. De afisat cat au platiti fiecare client la per fiecare hotel in
care a fost cazat

select cl.nume
,cl.prenume
,h.denumirea
,cm.data_sosire
,cm.zile_rezervate*cm.pret_zi suma
from dbo.clienti cl
,dbo.hotel h
,dbo.comanda cm
where cl.id_client = cm.id_client
and h.id_hotel = cm.id_hotel

Setul dinamic :

--11. De afisat informatia despre comenzile efectuate de Popovici in


anul 2020

select cl.nume
,cl.prenume
,cm.etaj
,cm.nr_camera
,cm.data_rezervare
,cm.data_sosire
,cm.zile_rezervate
,cm.pret_zi
from dbo.clienti cl
,dbo.comanda cm
where cl.id_client = cm.id_client
and cl.nume = ‘Popovici’
and cm.data_sosire between ‘01.01.2020’ and ‘31.12.2020’

Setul dinamic :
--12. De afisat lista clienților care au mai mult de 2 comenzi
efectuate

select concat(cl.nume,’ ‘,cl.prenume) as Nume_Client


,count(cm.id_client) nr_comenzi
from dbo.clienti cl
,dbo.comanda cm
where cl.id_client = cm.id_client
group by cl.nume,cl.prenume
having count(cm.id_client) > 2
order by count(cm.id_client) desc

Setul dinamic :

-- 13. De afisat ce suma de bani a fost realizata la fiecare metoda de


plata

select p.metoda_plata
,sum(c.zile_rezervate*c.pret_zi) suma
from dbo.comanda c
,dbo.plata p
where c.id_plata = p.id_plata
group by p.metoda_plata

Setul dinamic :

--14. De afisat lista hotelurilor din Chisinau

select *
from dbo.hotel h
where id_adresa in
(select id_adresa
from dbo.adrese a
,dbo.localitate l
where a.id_localitate = l.id_localitate
and l.orasul ='Chisinau')
-- 15. Lista tuturor clientilor, si sa se arate cei care au comanda in
orasul Balti
select *
from dbo.clienti c
left join (select c.id_client,h.denumirea
from dbo.comanda c
,dbo.hotel h
,dbo.adrese a
,dbo.localitate l
where c.id_hotel = h.id_hotel
and h.id_adresa = a.id_adresa
and a.id_localitate = l.id_localitate
and l.orasul = ‘Balti’
) d
on c.id_client = d.id_client

--16. Clientii la care emailul NU e @gmail.com , si clientii care au


mai putin de 25 ani

select c.nume
,c.prenume
,c.data_nastere
,c.numar_telefon
,c.email
,’fara @gmail.com’ lista
from dbo.clienti c
where c.email not like ‘%gmail.com’
union
select c.nume
,c.prenume
,c.data_nastere
,c.numar_telefon
,c.email
,’<25 ani’ lista
from dbo.clienti c
where datediff(year,c.data_nastere,sysdatetime()) < 25
order by nume,prenume
--17 . Sa se determine operatorul la numarul de telefoane a clientilor

select upper(concat(c.nume,’ ‘,c.prenume)) nume_client


,c.data_nastere
,case
when c.numar_telefon like ‘068%’
or c.numar_telefon like ‘069%’
or c.numar_telefon like ‘060%’
then ‘ORANGE’
when c.numar_telefon like ‘078%’
or c.numar_telefon like ‘079%’
or c.numar_telefon like ‘070%’
then ‘MOLDCELL’
when c.numar_telefon like ‘067%’
then ‘UNITE’
when c.numar_telefon is null
then ‘FARA NUMAR’
else ‘ALT OPERATOR’
end operator_mobil
,c.numar_telefon
from dbo.clienti c
Concluzie

La realizarea acestei lucrări , au fost scrise interogări simple, interogări cu funcții de grup,
interogări cu funcții de lucru asupra tipurilor caracteriale, funcții de lucru cu tipuri date ,
joncțiuni – inner join , left join ,subinterogări.

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