Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Sql


Index » educatie » » informatica » Sql
» Clauza GROUP BY


Clauza GROUP BY


Clauza GROUP BY

Aceasta claza imparte tabela in grupuri de linii. Liniile din fiecare grup au aceeasi valoare in dreptul coloanei specificate. Deci, valorile identice fac parte din acelasi grup. Gruparea permite efectuarea de operatii asupra acestor grupuri. Gruparea se poate face pe baza a oricat de multe coloane. Coloanele din lista de selectie trebuie sa figureze in clauza Group By, sau sa contina o functie specifica.

Sintaxa unei comenzi SELECT care contine aceasta clauza este:

SELECT col1, . coln

FROM nume_tabela

GROUP BY nume_col1, . nume_coln



Clauza ia in considerare o singura instanta a fiecarei valori dintr-o coloana, dupa o ordonare crescatoare a valorilor din coloana respectiva. GROUP BY se deosebeste de ORDER BY care, desi ordoneaza liniile in ordine crescatoare, nu inlatura valorile care se repeta.

Exemplu: se grupeaza liniile din tabela Angajat dupa valorile din coloana depart care memoreaza numarul departamentului si se numara angajatii din fiecare grup sau departament.

Select depart, "nr" = count(*)

From Angajat

Group By depart

ڤ

Selectia anumitor grupuri se face cu clauza HAVING, care compara o anumita proprietate a grupului, cu o valoare constanta. Daca un grup satisface expresia logica din clauza HAVING, acesta este inclus in rezultatul interogarii.

Sintaxa unei comenzi SELECT care contine aceasta clauza este:

SELECT col1, . coln

FROM nume_tabela

GROUP BY nume_col

HAVING expresie;

Exemple: se grupeaza liniile din tabela Angajat dupa valorile din coloana depart care memoreaza numarul departamentului si se afiseaza departamentele care au 5 angajati.

Select depart, "nr" = count(*)

From Angajat

Group By depart

Having count(*) = 5

Se selecteaza informatia din tabela Compartimente.

SELECT id_comp, den_comp FROM compartimente

Rezultatul este cel de mai jos:

id_comp

den_comp

Vinzari

Proiectare

Preturi

Contabilitate

Secretariat

Directori

Se selecteaza informatia din tabela Angajati (angajatii lucreaza in diferite compartimente).

SELECT marca, nume, prenume, id_compartiment, salariu FROM angajati

marca

nume

prenume

id_

compartiment

salariu

Popescu

Ileana

Ionescu

Catalina

Vasilescu

Ion

Popescu

Eleonor

Cristescu

IOo

Iona

Claudia

Stan

Ilie

Stanimir

Valeriu

Se selecteaza numai angajatii al caror nume incepe cu 'st'. Se foloseste operatorul Like.

SELECT marca, nume, prenume, id_compartiment, salariu

FROM angajati

WHERE (nume LIKE 'st%')

Rezultatul este cel de mai jos:

marca

nume

prenume

id_

compartiment

salariu

Stan

Ilie

Stanimir

Valeriu

Se selecteaza campuri din cele doua tabele Angajati si Compartimente. Operatorul INNER JOIN realizeaza legatura 1:m existenta intre cele doua tabele.

SELECT compartimente.den_comp, angajati.nume, angajati.prenume

FROM angajati INNER JOIN compartimente ON

angajati.id_compartiment = compartimente.id_comp

ORDER BY den_comp

Rezultatul este cel de mai jos:

den_comp

nume

prenume

Contabilitate

Iona

Claudia

Preturi

Cristescu

Ion

Proiectare

Vasilescu

Ion

Proiectare

Popescu

Eleonor

Secretariat

Stan

Ilie

Secretariat

Stanimir

Valeriu

Vinzari

Popescu

Ileana

Vinzari

Ionescu

Catalina

Comanda SELECT de mai jos numara angajatii din fiecare compartiment.

SELECT compartimente.den_comp, COUNT(angajati.marca) AS nr_angajati

FROM angajati INNER JOIN compartimente ON

angajati.id_compartiment = compartimente.id_comp

GROUP BY compartimente.den_comp

Rezultatul este cel de mai jos:

den_comp

nr_angajati

Contabilitate

Preturi

Proiectare

Secretariat

Vinzari





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate