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.
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.