Sunteți pe pagina 1din 15

Baze de date SQL

AP 1
Prof. Micu Alexandra-Elza
Creati tabelul tabAngajati
tabAngajati
IDAngajat NumeAngajat Salariu Adresa Functia
1 Popa Marin 2500 București Designer
2 Anca Viorel 3000 București Programator
3 Marin Ionela 3500 București Analist
4 Ion Simona 3000 București Programator
5 Stan Ion 3500 București Administrator DB

Creaţi interogări care să răspundă următoarelor cerinţe:


a) Afişarea numărului de angajaţi
b) Aflarea angajatului cu salariului maxim, minim și mediu
c) Aflarea sumei totale a salariilor
d) Aflarea numărul de persoane angajate şi bugetul alocat
salariilor pentru fiecare categorie de funcţii
e) Aflarea numărul de persoane şi bugetul pentru funcţiile în care
sunt mai mult de 5 angajaţi
Creati tabelul tabAngajati
tabAngajati
IDAngajat NumeAngajat Salariu Adresa Functia
1Popa Marin 2500 București Designer
2Anca Viorel 3000 București Programator
3Marin Ionela 3500 București Analist
4Ion Simona 3000 București Programator
5Stan Ion 3500 București Administrator DB

Creaţi interogarea care să răspundă următoarei cerinţe:


a) Afişarea numărului de angajaţi

SELECT COUNT(NumeAngajat) AS TotalAngajati


FROM tabAngajati;
Creati tabelul tabAngajati
tabAngajati
IDAngajat NumeAngajat Salariu Adresa Functia
1 Popa Marin 2500 București Designer
2 Anca Viorel 3000 București Programator
3 Marin Ionela 3500 București Analist
4 Ion Simona 3000 București Programator
5 Stan Ion 3500 București Administrator DB

Creaţi interogarea care să răspundă următoarei cerinţe:

b) Aflarea angajatului cu salariului maxim, minim și mediu

SELECT MAX(Salariu) AS Maxim, MIN(Salariu) AS Minim,


AVG (Salariu) AS Mediu
FROM tabAngajati;

SELECT MAX(SalarAng) AS Maxim, MIN(SalarAng) AS Minim,


AVG (SalarAng) AS Mediu
FROM Angajati;
Creati tabelul tabAngajati
tabAngajati
IDAngajat NumeAngajat Salariu Adresa Functia
1Popa Marin 2500 București Designer
2Anca Viorel 3000 București Programator
3Marin Ionela 3500 București Analist
4Ion Simona 3000 București Programator
5Stan Ion 3500 București Administrator DB

Creaţi interogarea care să răspundă următoarei cerinţe:

c) Aflarea sumei totale a salariilor

SELECT SUM(Salariu) AS BugetSalariu


FROM tabAngajati;

SELECT SUM(SalarAng) AS BugetSalariu


FROM Angajati;
Creati tabelul tabAngajati
tabAngajati
IDAngajat NumeAngajat Salariu Adresa Functia
1 Popa Marin 2500 București Designer
2 Anca Viorel 3000 București Programator
3 Marin Ionela 3500 București Analist
4 Ion Simona 3000 București Programator
5 Stan Ion 3500 București Administrator DB

Creaţi interogarea care să răspundă următoarei cerinţe:

d) Aflarea numărul de persoane angajate şi bugetul alocat salariilor


pentru fiecare categorie de funcţii
SELECT count(IdAngajat) AS NrPersoane, Functia, sum(Salariu)
as TotalSalariu
FROM tabAngajati GROUP BY Functia;

SELECT count(id) AS NrPersoane, FunctieAng, sum(SalarAng)


as TotalSalariu
FROM ANGAJATI GROUP BY FunctieAng;
tabAngajati
IDAngajat NumeAngajat Salariu Adresa Functia
1 Popa Marin 2500 București Designer
2 Anca Viorel 3000 București Programator
3 Marin Ionela 3500 București Analist
4 Ion Simona 3000 București Programator
5 Stan Ion 3500 București Administrator DB

Creaţi interogarea care să răspundă următoarei cerinţe:

e) Aflarea numărul de persoane şi bugetul pentru funcţiile în care


sunt mai mult de 5 angajaţi

SELECT count(IdAngajat) AS NrPersoane, Functia, sum(Salariu)


as TotalSalariu
FROM tabAngajati GROUP BY Functia
HAVING COUNT(IdAngajat)>5;

Clauza HAVING acţionează ca şi clauza WHERE pentru grupuri,


restângând grupurile care apar în relaţia (tabelul) rezultant
SELECT count(id) AS NrPersoane, FunctieAng, sum(SalarAng)
as TotalSalariu
FROM Angajati GROUP BY FunctieAng
 Clauza HAVING acţionează ca şi clauza
WHERE pentru grupuri, restângând grupurile
care apar în relaţia (tabelul) rezultant.
Se considera relatiile

 Identificaţi pentru fiecare relaţie cheia primară.


 Identificaţi o cheie străină. Arătaţi pentru ce relaţie îndeplineşte

această funcţie şi care este rolul ei.


 Scrieţi câte o interogare pentru fiecare dintre punctele de mai jos:

◦ Să se listeze toţi elevii cu următoarele informaţii: Nume, Prenume, CNP, Clasa,


Specializarea.
◦ Presupunând că există cel puţin o specializare denumită X, să se listeze toate
clasele cu această specializare.
◦ Presupunând că există o clasă denumită Y, să se listeze toţi elevii acestei clase.
◦ Utilizând funcţiile de grup să se afle numărul total de elevi care studiază la o
specializare Z.
◦ Să se afle pentru fiecare specializare numărul total de elevi.
Identificaţi pentru fiecare relaţie cheia primară.

I. IdElev pentru relaţia tabElevi


II. IdClasa pentru relaţia tabClase
III. IdSpecializare pentru relaţia tabSpecializări
 IdClasa este cheie străină pentru relaţia tabElevi, deoarece se

potriveşte cu cheia primară a relaţiei tabClase. Rolul ei este de a


face legătura dintre relaţiile tabElevi şi tabClase
sau
Specializare este cheie străină pentru relaţia tabClase, deoarece
se potriveste cu cheia primară a relaţiei tabSpecializări. Rolul ei
este de a face legătura dintre tabClase şi tabSpecializări
Identificati o cheie straina . Aratati pentru ce
relatie indeplineste aceasta functie si care este
rolul ei.

IdClasa este cheie străină pentru relaţia tabElevi,


deoarece se potriveşte cu cheia primară a relaţiei
tabClase. Rolul ei este de a face legătura dintre
relaţiile tabElevi şi tabClase
sau
Specializare este cheie străină pentru relaţia
tabClase, deoarece se potriveste cu cheia primară a
relaţiei tabSpecializări. Rolul ei este de a face
legătura dintre tabClase şi tabSpecializări
Să se listeze toţi elevii cu următoarele informaţii:
Nume, Prenume, CNP, Clasa, Specializarea.

SELECT tabElevi.NumeElev, tabElevi.PrenumeElev,


tabElevi.CNP, tabClase.NumeClasa,
tabSpecializari.NumeSpecializare
FROM tabSpecializari INNER JOIN (tabClase INNER
JOIN tabElevi ON tabClase.IdClasa =
tabElevi.IdClasa) ON tabSpecializari.IdSpecializare =
tabClase.Specializare;
Presupunând că există cel puţin o specializare
denumită X, să se listeze toate clasele cu această
specializare.
SELECT tabClase.NumeClasa,
tabSpecializari.NumeSpecializare
FROM tabSpecializari INNER JOIN tabClase ON
tabSpecializari.IdSpecializare =
tabClase.Specializare
WHERE (((tabSpecializari.NumeSpecializare)=’X’));

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