Introducere în clauza GROUP BY în SQL

Pentru cazurile în care trebuie să grupăm rândurile cu aceeași valoare clauza Group By intră în imagine. Clauza GROUP BY este o comandă în SQL care va efectua această operație.

Punctul important de reținut aici este faptul că clauza GROUP BY este utilizată în instrucțiunea SELECT din interogare după utilizarea clauzei WHERE.

Sintaxă

Sintaxa pentru clauza Group By este -

SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;

Explicarea sintaxei

  1. Instrucțiunea SELECT - interogare de comenzi SQL
  2. nume_tabelă - numele la care se face referire la tabelul bazei de date
  3. condiții - consultați condițiile care trebuie verificate
  4. GROUP BY - clauză pentru a grupa aceleași rânduri
  5. COMANDĂ BY - folosită întotdeauna după clauza Group By pentru aranjarea rândurilor în ordine crescătoare sau descendentă. Aceasta este o condiție opțională.

Cum funcționează clauza GROUP BY în SQL?

Pentru a înțelege modul de funcționare a clauzei Group By, să luăm ajutorul unui exemplu. Luați în considerare un tabel cu numele EMPLOYEE care conține detaliile de bază ale angajatului, cum ar fi numele, vârsta, numărul de telefon, dob, sex, adresa, id-ul de e-mail etc.

Tabelul angajaților

Numevârstătelefonsexe-mail
Ioan23123Masculin
Mai22456Femeie
Ana45644Femeie
Vase573456Femeie
Res45456Femeie
Bronza782456Masculin
A fugit345899Masculin
Wan557789Femeie
Tung325689Masculin
Chung214678Masculin

Luați în considerare EMPLOYEE are aproximativ 10 înregistrări.

Să primim mai întâi diferitele valori ale „genului” din acest tabel. Întrebarea care ne va ajuta să ne luăm obiectivul ar fi -

SELECT gender FROM EMPLOYEE;

Acest lucru ne va oferi următoarele valori-

sex
Masculin
Femeie
Femeie
Femeie
Femeie
Masculin
Masculin
Femeie
Masculin
Masculin

Problema aici este redundanța valorilor, adică așa cum putem vedea, există doar două valori unice de gen în tabel, dar rezultatul nu ne oferă doar valorile unice, ci toate valorile chiar dacă sunt repetitive.

Deci, pentru a obține doar valorile unice din tabel, vom folosi următoarea interogare -

SELECT gender FROM EMPLOYEE GROUP BY gender;

Rezultatul pe care îl vom primi după executarea acestei interogări va fi -

sex
Masculin
Femeie

Group By va grupa toate aceleași valori din rânduri și va întoarce o singură intrare sau un singur rând pentru ele, așa cum s-a întâmplat cu rândurile „Bărbat” și „Femeie” din tabel. Acest lucru a dus la doar două valori unice care au fost prezente în coloana „gen” i, e. Femeie și Bărbat.

Acum, să luăm un alt exemplu de tabel care conține detaliile departamentului cu care este asociat fiecare dintre acești angajați. Vom numi acest tabel angajați_Departament.

Tabelul departamentului angajaților

Numesăltadepartament
Ioanhod1Serviciu
Maihod2Finanţa
Anahod1Serviciu
Vasehod2Finanţa
Reshod3Tech
Bronzahod5A sustine
A fugithod3Serviciu
Wanhod3Tech
Tunghod3Finanţa
Chunghod5HR

Acum, hai să executăm interogarea de mai jos și să căutăm rezultatul -

SELECT hod, department FROM Employee_Department GROUP BY hod, department;

Executarea acestei interogări aduce următorul rezultat -

săltadepartament
hod1Serviciu
hod2Finanţa
hod3Tech
hod5A sustine
hod3Serviciu
hod3Finanţa
hod5HR

Clauza GROUP BY funcționează atât pe hod, cât și pe departament pentru a căuta rândurile unice în scenariul menționat mai sus. Acesta va verifica combinația dintre hod și departament față de alte intrări ale hod și departament pentru a identifica unicitatea acestuia. Dacă hod-ul este același, dar departamentul este diferit, atunci acel rând este tratat ca unul unic. Dacă hodul și departamentul sunt identici pentru mai mult de un rând, atunci intrarea duplicată nu este creată și este afișat doar un rând.

GRUPA BY Operații de clauză

Putem folosi clauza Group By cu mai multe funcții de grupare și agregare. Să luăm câteva exemple folosind cele două tabele menționate mai sus, respectiv EMPLOYEE și Angajat_Departament.

Exemplul # 1

Obținerea numărului de angajați bărbați și de sex feminin din companie.

SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;

Executarea acestei interogări aduce următorul rezultat -

COUNT ( 'nume')sex
5Masculin
5Femeie

Exemplul # 2

Obținerea numărului de departamente din companie în ordinea descrescătoare a numărului.

SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;

Executarea acestei interogări aduce următorul rezultat -

COUNT ( 'nume')departament
3Serviciu
3Finanţa
2Tech
1A sustine
1HR

Exemplul # 3

Obținerea numărului de departamente diferite sub același punct din companie în ordinea descrescătoare a numărului.

SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;

Executarea acestei interogări aduce următorul rezultat -

COUNT ( 'nume')săltadepartament
2hod1Serviciu
2hod2Finanţa
2hod3Tech
1hod5A sustine
1hod3Serviciu
1hod3Finanţa
1hod5HR

Clauza HAVING în SQL

Utilizarea clauzei HAVING cu clauza Group By va restricționa rezultatul interogării la rândurile care au valoarea menționată cu clauza Have.

Înțelegerea acestui lucru cu un exemplu vă va ușura -

Exemplul # 4

SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;

Executarea acestei interogări aduce următorul rezultat -

Numevârstătelefonsexe-mail
Mai22456Femeie
Ana45644Femeie
Vase573456Femeie
Res45456Femeie
Wan557789Femeie

Exemplul # 5

SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;

Executarea acestei interogări aduce următorul rezultat -

Numesăltadepartament
Maihod2Finanţa
Vasehod2Finanţa
Tunghod3Finanţa

Concluzie

Folosind clauza GROUP BY cu instrucțiunea SELECT putem grupa rânduri cu aceleași valori împreună cu utilizarea de funcții agregate, constante și expresii.

Articole recomandate

Acesta este un ghid pentru clauza GROUP BY în SQL. Aici vom discuta despre modul în care GROUP BY Clause funcționează în SQL cu ajutorul unor exemple și tabele de angajați. De asemenea, puteți arunca o privire la următoarele articole pentru a afla mai multe -

  1. Interogare SQL Insert
  2. Vizualizări SQL
  3. Baza de date în SQL
  4. Tranzacții în SQL