Database
 sql >> Database >  >> RDS >> Database

Come utilizzare la clausola GROUP BY in SQL

In questo articolo SQL, impareremo a conoscere la clausola GROUP BY e come usarla in SQL. Discuteremo anche l'utilizzo della clausola GROUP BY con la clausola WHERE.

Cos'è la clausola GROUP BY?

La clausola GROUP BY è una clausola SQL utilizzata nell'istruzione SELECT per gestire gli stessi record di una colonna nel gruppo utilizzando le funzioni SQL.

Sintassi della clausola GROUP BY:

SELECT columnname1, columnname2, columnname3 FROM tablename GROUP BY columnname;

Possiamo utilizzare più colonne della tabella nella clausola GROUP BY.

Ci sono alcuni passaggi che dobbiamo imparare a usare la clausola GROUP BY nella query SQL:

1. Crea un nuovo database o utilizza un database esistente selezionando il database utilizzando la parola chiave USE seguita dal nome del database.

2. Crea una nuova tabella all'interno del database selezionato oppure puoi utilizzare una tabella già creata.

3. Se la tabella è stata appena creata, inserire i record nel database appena creato utilizzando la query INSERT e visualizzare i dati inseriti utilizzando la query SELECT senza la clausola GROUP BY.

4. Ora siamo pronti per utilizzare la clausola GROUP BY nelle query SQL.

Passaggio 1:crea un nuovo database o utilizza un database già creato.

Ho già creato un database. Utilizzerò il nome del database creato esistente, Società.

USE Company;

Società è il nome del database.

Coloro che non hanno creato un database seguono la query seguente per creare il database:

CREATE DATABASE database_name;

Dopo aver creato il database, selezionare il database utilizzando la parola chiave USE seguita dal nome del database.

Passaggio 2:crea una nuova tabella o utilizza una tabella già esistente:

Ho già creato una tabella. Userò la tabella esistente denominata Employees.

Per creare le nuove tabelle, segui la seguente sintassi CREATE TABLE:

CREATE TABLE table_name(

columnname1 datatype(column size),

columnname2 datatype(column size),

columnname3 datatype(column size)

);

Passaggio 3:inserisci i record nella tabella appena creata utilizzando la query INSERT e visualizza i record utilizzando la query SELECT.

Utilizzare la seguente sintassi per inserire nuovi record nella tabella:

INSERT INTO table_name VALUES(value1, value2, value3);

Utilizzare la seguente sintassi per visualizzare i record dalla tabella:

SELECT * FROM table_name;

La seguente query visualizzerà i record dei dipendenti:

SELECT * FROM Employees;

L'output della query SELECT sopra è:

ID DIPENDENTE FIRST_NAME COGNOME STIPENDIO CITTÀ REPARTO RIDESTORE
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
1003 NICHIL VANI 50500 JAIPUR FM 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FM 2
2003 RUCHIKA JAIN 50000 MUMBAI C# 5
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FM 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI PROVA 4
4002 ASHWINI BAGAGLIO 54500 NOIDA JAVA 3
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
5001 ARCHIT SHARMA 55500 DELHI PROVA 4
5002 SANKET CHAUHAN 70000 HYDERABAD JAVA 3
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
6001 RAHUL NIKAM 54500 BANGALORE PROVA 4
6002 ATISH JADHAV 60500 BANGALORE C# 5
6003 NIKITA INGALE 65000 HYDERABAD ORACLE 1

Fase 4:siamo pronti per utilizzare la clausola GROUP BY nelle query

Ora approfondiremo la clausola GROUP BY con l'aiuto di esempi

Esempio 1: Scrivi una query per visualizzare i record dei dipendenti raggruppati per città.

SELECT * FROM EMPLOYEES GROUP BY CITY;

La query sopra mostra i record dei dipendenti in cui un dipendente della stessa città sarà considerato un gruppo. Ad esempio, se nella tabella sono presenti 10 record di dipendenti in cui 3 provengono dalla città di Pune, 3 provengono dalla città di Mumbai, 2 provengono da Hyderabad e Bangalore, la query precedente raggrupperà il dipendente della città di Pune Il dipendente della città di Mumbai come un record e così via .

L'output della query precedente:

ID DIPENDENTE FIRST_NAME COGNOME STIPENDIO CITTÀ REPARTO RIDESTORE
6001 RAHUL NIKAM 54500 BANGALORE PROVA 4
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
5002 SANKET CHAUHAN 70000 HYDERABAD JAVA 3
1003 NICHIL VANI 50500 JAIPUR FM 2
2003 RUCHIKA JAIN 50000 MUMBAI C# 5
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1

Come possiamo vedere, i record dei dipendenti sono raggruppati per città e i record vengono visualizzati in ordine crescente per impostazione predefinita.

Esempio 2: Scrivi una query per visualizzare i record dei dipendenti raggruppati per stipendio in ordine decrescente.

SELECT * FROM EMPLOYEES GROUP BY SALARY DESC; 

La query precedente mostra i record dei dipendenti in cui i dipendenti con lo stesso stipendio saranno considerati un gruppo e i record verranno visualizzati in ordine decrescente.

L'output della query precedente:

ID DIPENDENTE FIRST_NAME COGNOME STIPENDIO CITTÀ REPARTO RIDESTORE
5002 SANKET CHAUHAN 70000 HYDERABAD JAVA 3
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
6003 NIKITA INGALE 65000 HYDERABAD ORACLE 1
4001 RAJESH GOUD 60500 MUMBAI PROVA 4
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
4002 ASHWINI BAGAGLIO 54500 NOIDA JAVA 3
1003 NICHIL VANI 50500 JAIPUR FM 2
2003 RUCHIKA JAIN 50000 MUMBAI C# 5
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5

Come possiamo vedere, i record dei dipendenti sono raggruppati per stipendio e i record vengono visualizzati in ordine decrescente, come menzioniamo desc alla fine.

Esempio 3: Scrivi una query per visualizzare i record dei dipendenti raggruppati per stipendio e città.

SELECT * FROM EMPLOYEES GROUP BY SALARY, CITY;

La query precedente mostra i record dei dipendenti in cui i dipendenti con lo stesso stipendio e città saranno considerati un gruppo.

Ad esempio, supponiamo che la tabella contenga 10 record di dipendenti. Da 10 dipendenti lo stipendio di 2 dipendenti e la città corrispondono ad altri due dipendenti e il resto di sei dipendenti lo stipendio e la città non hanno eguali, quindi i 6 dipendenti saranno considerati come 6 gruppi separati e 2 dipendenti che corrispondono ad altri 2 dipendenti saranno considerati come un gruppo . In breve si formeranno 8 gruppi.

L'output della query precedente:

ID DIPENDENTE FIRST_NAME COGNOME STIPENDIO CITTÀ REPARTO RIDESTORE
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
2003 RUCHIKA JAIN 50000 MUMBAI C# 5
1003 NICHIL VANI 50500 JAIPUR FM 2
6001 RAHUL NIKAM 54500 BANGALORE PROVA 4
4002 ASHWINI BAGAGLIO 54500 NOIDA JAVA 3
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
5001 ARCHIT SHARMA 55500 DELHI PROVA 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
6002 ATISH JADHAV 60500 BANGALORE C# 5
4001 RAJESH GOUD 60500 MUMBAI PROVA 4
6003 NIKITA INGALE 65000 HYDERABAD ORACLE 1
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
5002 SANKET CHAUHAN 70000 HYDERABAD JAVA 3

Come possiamo vedere, i record dei dipendenti sono raggruppati per stipendio e città e i record vengono visualizzati in ordine crescente per impostazione predefinita.

Esempio 4: Scrivi una query per visualizzare i record dei dipendenti per città e dipartimento.

SELECT * FROM EMPLOYEES GROUP BY CITY, DEPARTMENT;

La query precedente mostra i record dei dipendenti in cui i dipendenti si trovano nella stessa città e il dipartimento sarà considerato un gruppo.

L'output della query precedente:

ID DIPENDENTE FIRST_NAME COGNOME STIPENDIO CITTÀ REPARTO RIDESTORE
6002 ATISH JADHAV 60500 BANGALORE C# 5
6001 RAHUL NIKAM 54500 BANGALORE PROVA 4
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
5001 ARCHIT SHARMA 55500 DELHI PROVA 4
5002 SANKET CHAUHAN 70000 HYDERABAD JAVA 3
6003 NIKITA INGALE 65000 HYDERABAD ORACLE 1
1003 NICHIL VANI 50500 JAIPUR FM 2
2003 RUCHIKA JAIN 50000 MUMBAI C# 5
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI PROVA 4
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
4002 ASHWINI BAGAGLIO 54500 NOIDA JAVA 3
2002 BHAVESH JAIN 65500 PUNE FM 2
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1

Come possiamo vedere, i record dei dipendenti sono raggruppati per città e dipartimento e i record vengono visualizzati in ordine crescente per impostazione predefinita.

Esempio 5: Scrivi una query per contare l'elenco dei dipendenti in ogni reparto dalla tabella dei dipendenti.

SELECT DEPARTMENT, COUNT(DEPARTMENT) FROM EMPLOYEES GROUP BY DEPARTMENT;

La query precedente mostra il conteggio dei dipendenti in ciascun gruppo di reparti in base al reparto. Come sei dipendenti lavorano nel dipartimento delle risorse umane, cinque lavorano in un altro dipartimento.

L'output della query precedente:

REPARTO CONTEGGIO(REPARTO)
C# 4
FM 3
JAVA 4
ORACLE 4
PROVA 3

Come possiamo vedere, quattro dipendenti lavorano nel reparto C#, tre lavorano nel reparto FMW, ecc.

Esempio 6: Scrivi una query per contare l'elenco dei dipendenti di ogni città dalla tabella dei dipendenti.

SELECT CITY, COUNT(CITY) FROM EMPLOYEES GROUP BY CITY;

La query precedente mostra il conteggio dei dipendenti in ogni gruppo di città per città. Ad esempio, tre dipendenti lavorano dalla città di Pune, quattro lavorano da un'altra città e così via.

L'output della query precedente:

CITTÀ COUNT(CITTÀ)
BANGALORE 2
CHANDIGARH 2
DELHI 2
HYDERABAD 2
JAIPUR 2
MUMBAI 3
NOIDA 2
PUNE 3

Come possiamo vedere, due dipendenti lavorano dalla città di Bangalore, tre dalla città di Mumbai e così via.

Esempio 7: Scrivi una query per sommare il gruppo salariale dei dipendenti per città.

SELECT CITY, SUM(SALARY) AS SALARY FROM EMPLOYEES GROUP BY CITY;

Quanto sopra viene utilizzato per sommare gli stipendi dei dipendenti raggruppati per nome della città. Ad esempio, per i dipendenti della stessa città, il loro stipendio sarà la somma e considerato un gruppo. Abbiamo utilizzato la funzione di somma aggregata seguita dalla colonna dello stipendio per aggiungere lo stipendio.

L'output della query precedente:

CITTÀ STIPENDIO
BANGALORE 115000
CHANDIGARH 104000
DELHI 115500
HYDERABAD 135000
JAIPUR 101000
MUMBAI 169000
NOIDA 114500
PUNE 186500

Come possiamo vedere, lo stipendio della somma della città di Bangalore è 115000, lo stipendio della somma della città di Chandigarh è 104000, che è l'aggiunta di uno stipendio diverso dei dipendenti, ma dalla città viene utilizzato lo stesso approccio per ogni città.

Esempio 8: Scrivi una query per trovare lo stipendio minimo di ciascun dipartimento.

SELECT DEPARTMENT, MIN(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;

La query di cui sopra viene utilizzata per trovare lo stipendio minimo del dipendente da ciascun dipartimento. Lo stipendio di uno dei dipendenti del dipartimento Java è 54500, che è il più basso dell'intero dipartimento Java. Lo stesso 48500 è lo stipendio più basso pagato al dipendente nel reparto C#.

L'output della query precedente:

REPARTO MIN(STIPENDIO)
C# 48500
FM 50500
JAVA 54500
ORACLE 55500
PROVA 54500

Come possiamo vedere, 50500 è lo stipendio più basso pagato a uno dei dipendenti del dipartimento FMW, 55500 è lo stipendio più basso pagato a uno dei dipendenti del dipartimento ORACLE.

Esempio 9: Scrivi una query per trovare lo stipendio minimo di ogni città.

SELECT CITY, MAX(SALARY) FROM EMPLOYEES GROUP BY CITY;

La query di cui sopra viene utilizzata per trovare lo stipendio massimo di ciascuna città. Uno dei dipendenti dello stipendio della città di Pune è 65500, che è il più alto dell'intera città di Pune, lo stesso 60500 è lo stipendio più alto pagato al dipendente nella città di Mumbai.

L'output della query precedente:

CITTÀ MAX(STIPENDIO)
BANGALORE 60500
CHANDIGARH 55500
DELHI 60000
HYDERABAD 70000
JAIPUR 50500
MUMBAI 60500
NOIDA 60000
PUNE 65500

Come possiamo vedere, 50500 è lo stipendio più alto pagato a uno dei dipendenti nella città di Jaipur, 55500 è lo stipendio più alto pagato a uno dei dipendenti nella città di Chandigarh.