logo

SQL | AGRUPAR PER

La declaració GROUP BY a SQL s'utilitza per organitzar dades idèntiques en grups amb l'ajuda d'algunes funcions. és a dir, si una columna concreta té els mateixos valors en diferents files, organitzarà aquestes files en un grup.

Característiques

  • La clàusula GROUP BY s'utilitza amb la instrucció SELECT.
  • A la consulta, la clàusula GROUP BY es col·loca després de ON clàusula.
  • A la consulta, la clàusula GROUP BY es col·loca abans de COMANDA clàusula BY si s'utilitza.
  • A la consulta, la clàusula Group BY es col·loca abans de la clàusula Havent.
  • Posa la condició a la clàusula havent.

Sintaxi :

SELECCIONA columna1, nom_funció(columna2)



FROM nom_taula

ON condició

GROUP BY columna1, columna2

ORDENA PER columna1, columna2;

Explicació:

  1. nom_funció : Nom de la funció utilitzada per exemple, SUMA() , AVG().
  2. nom_taula : Nom de la taula.
  3. condició : Condició utilitzada.

Suposem que tenim dues taules Taula de mostra d'empleats i estudiants és la següent després d'afegir dues taules, farem algunes operacions específiques per conèixer GROUP BY.

emet una cadena com int java

Taula d'empleats:

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

Inseriu algunes dades aleatòries en una taula i després realitzarem algunes operacions a GROUP BY.

Consulta:

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);>

Sortida:

Taula d'estudiants:

Consulta:

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');>

Sortida:

Agrupa per columna única

Grup Per columna única significa col·locar totes les files amb el mateix valor d'aquesta columna en particular en un grup. Considereu la consulta com es mostra a continuació:

Consulta:

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

La consulta anterior produirà la sortida següent:

Com podeu veure a la sortida anterior, les files amb NOMS duplicats s'agrupen sota el mateix NOM i el SALARI corresponent és la suma del SALARI de les files duplicades. La funció SUM() d'SQL s'utilitza aquí per calcular la suma.

Agrupa per múltiples columnes

Agrupar per diverses columnes és dir, per exemple, GROUP BY columna1, columna2 . Això significa col·locar totes les files amb els mateixos valors de columnes columna 1 i columna 2 en un sol grup. Considereu la consulta següent:

Consulta:

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

Sortida:

Sortida : Com podeu veure a la sortida anterior, els alumnes amb la mateixa ASSIGNATURA i CURS es col·loquen al mateix grup. I aquells que tenen com a única TEMA la mateixa però no ANY pertanyen a grups diferents. Així que aquí hem agrupat la taula segons dues columnes o més d'una columna.

estàtica al c

Clàusula HAVING a la clàusula GROUP BY

Sabem que la clàusula WHERE s'utilitza per posar condicions a les columnes, però què passa si volem posar condicions als grups? Aquí és on s'utilitza la clàusula HAVING. Podem utilitzar la clàusula HAVING per posar condicions per decidir quin grup formarà part del conjunt de resultats finals. A més, no podem utilitzar funcions agregades com SUM(), COUNT(), etc. amb la clàusula WHERE. Per tant, hem d'utilitzar la clàusula HAVING si volem utilitzar alguna d'aquestes funcions a les condicions.

Sintaxi :

SELECCIONA columna1, nom_funció(columna2)

FROM nom_taula

ON condició

GROUP BY columna1, columna2

generador de nombres aleatoris en c

TENIR Estat

ORDENA PER columna1, columna2;

Explicació:

  1. nom_funció : Nom de la funció utilitzada per exemple, SUM() , AVG().
  2. nom_taula : Nom de la taula.
  3. condició : Condició utilitzada.

Exemple :

SELECT NAME, SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>3000;>

Sortida :

Com podeu veure a la sortida anterior, només un grup dels tres grups apareix al conjunt de resultats, ja que és l'únic grup on la suma de SALARY és superior a 3000. Per tant, hem utilitzat la clàusula HAVING aquí per posar aquesta condició com a La condició s'ha de posar en grups no en columnes.