logo

SQL | A SE GRUPA CU

Declarația GROUP BY în SQL este folosit pentru a aranja date identice în grupuri cu ajutorul unor funcții. adică dacă o anumită coloană are aceleași valori în rânduri diferite, atunci va aranja aceste rânduri într-un grup.

Caracteristici

  • Clauza GROUP BY este utilizată cu instrucțiunea SELECT.
  • În interogare, clauza GROUP BY este plasată după UNDE clauză.
  • În interogare, clauza GROUP BY este plasată înaintea ORDIN Clauza BY dacă este utilizată.
  • În interogare, clauza Group BY este plasată înaintea clauzei Have.
  • Pune condiția în clauza have.

Sintaxă :

SELECTAȚI coloana1, numele_funcției(coloana2)



FROM table_name

starea UNDE

GROUP BY coloana1, coloana2

eroare de atribut python

ORDER BY coloana1, coloana2;

Explicaţie:

  1. nume_funcție : Numele funcției utilizate, de exemplu, SUM() , AVG().
  2. nume_tabel : Numele tabelului.
  3. condiție : Stare folosită.

Să presupunem că avem două tabele Tabelul Eșantion Angajat și Student este după cum urmează după adăugarea a două tabele, vom face câteva operațiuni specifice pentru a afla despre GROUP BY.

Tabelul angajaților:

CREATE TABLE emp ( emp_no INT PRIMARY KEY, name VARCHAR(50), sal DECIMAL(10,2), age INT );>

Inserați câteva date aleatorii într-un tabel și apoi vom efectua câteva operații în GROUP BY.

execvp

Interogare:

INSERT INTO emp (emp_no, name, sal, age) VALUES (1, 'Aarav', 50000.00, 25), (2, 'Aditi', 60000.50, 30), (3, 'Amit', 75000.75, 35), (4, 'Anjali', 45000.25, 28), (5, 'Chetan', 80000.00, 32), (6, 'Divya', 65000.00, 27), (7, 'Gaurav', 55000.50, 29), (8, 'Isha', 72000.75, 31), (9, 'Kavita', 48000.25, 26), (10, 'Mohan', 83000.00, 33);>

Ieșire:

Masa elevilor:

Interogare:

CREATE TABLE student ( name VARCHAR(50), year INT, subject VARCHAR(50) ); INSERT INTO student (name, year, subject) VALUES ('Alice', 1, 'Mathematics'), ('Bob', 2, 'English'), ('Charlie', 3, 'Science'), ('David', 1, 'History'), ('Emily', 2, 'Art'), ('Frank', 3, 'Computer Science');>

Ieșire:

regexp_like în mysql

Grupați după o singură coloană

Grupare Prin o singură coloană înseamnă plasarea tuturor rândurilor cu aceeași valoare doar a acelei coloane într-un grup. Luați în considerare interogarea așa cum se arată mai jos:

Interogare:

SELECT NAME, SUM(SALARY) FROM emp GROUP BY NAME;>

Interogarea de mai sus va produce rezultatul de mai jos:

După cum puteți vedea în rezultatul de mai sus, rândurile cu NUME duplicat sunt grupate sub același NUME și SALARIUL lor corespunzător este suma SALARIULUI rândurilor duplicate. Funcția SUM() a SQL este folosită aici pentru a calcula suma.

Grupați după mai multe coloane

Gruparea după mai multe coloane este să spunem, de exemplu, GROUP BY coloana1, coloana2 . Aceasta înseamnă plasarea tuturor rândurilor cu aceleași valori de coloane coloana 1 și coloana 2 într-un singur grup. Luați în considerare interogarea de mai jos:

Interogare:

SELECT SUBJECT, YEAR, Count(*) FROM Student GROUP BY SUBJECT, YEAR;>

Ieșire:

15 din 100.00

Ieșire : După cum puteți vedea în rezultatul de mai sus, studenții cu același SUBIECTUL și ANUL sunt plasați în aceeași grupă. Iar cei al căror singur SUBIEC este același dar nu AN aparțin unor grupuri diferite. Deci aici am grupat tabelul în funcție de două coloane sau mai multe coloane.

HAVING Clauza în GROUP BY Clauza

Știm că clauza WHERE este folosită pentru a pune condiții pe coloane, dar dacă vrem să punem condiții pe grupuri? Aici intră în uz clauza HAVING. Putem folosi clauza HAVING pentru a pune condiții pentru a decide ce grup va face parte din setul de rezultate finale. De asemenea, nu putem folosi funcții agregate precum SUM(), COUNT(), etc. cu clauza WHERE. Deci trebuie să folosim clauza HAVING dacă vrem să folosim oricare dintre aceste funcții în condiții.

Sintaxă :

SELECTAȚI coloana1, numele_funcției(coloana2)

FROM table_name

starea UNDE

GROUP BY coloana1, coloana2

AVÂND stare

ORDER BY coloana1, coloana2;

Explicaţie:

  1. nume_funcție : Numele funcției utilizate, de exemplu, SUM() , AVG().
  2. nume_tabel : Numele tabelului.
  3. condiție : Stare folosită.

Exemplu :

setinterval javascript

După cum puteți vedea în rezultatul de mai sus, doar un grup din cele trei grupuri apare în setul de rezultate, deoarece este singurul grup în care suma SALARIULUI este mai mare de 3000. Așa că am folosit aici clauza HAVING pentru a plasa această condiție ca condiția este necesară pentru a fi plasată pe grupuri, nu pe coloane.