Database
 sql >> Base de données >  >> RDS >> Database

Comment utiliser la clause GROUP BY dans SQL

Dans cet article SQL, nous allons découvrir la clause GROUP BY et comment l'utiliser dans SQL. Nous discuterons également de l'utilisation de la clause GROUP BY avec la clause WHERE.

Qu'est-ce que la clause GROUP BY ?

La clause GROUP BY est une clause SQL utilisée dans l'instruction SELECT pour gérer les mêmes enregistrements d'une colonne du groupe à l'aide de fonctions SQL.

Syntaxe de la clause GROUP BY :

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

Nous pouvons utiliser plusieurs colonnes de la table dans la clause GROUP BY.

Il y a quelques étapes, nous devons apprendre à utiliser la clause GROUP BY dans la requête SQL :

1. Créez une nouvelle base de données ou utilisez une base de données existante en sélectionnant la base de données à l'aide du mot-clé USE suivi du nom de la base de données.

2. Créez une nouvelle table dans la base de données sélectionnée, ou vous pouvez utiliser une table déjà créée.

3. Si la table est nouvellement créée, insérez les enregistrements dans la base de données nouvellement créée à l'aide de la requête INSERT et affichez les données insérées à l'aide de la requête SELECT sans la clause GROUP BY.

4. Nous sommes maintenant prêts à utiliser la clause GROUP BY dans les requêtes SQL.

Étape 1 :Créez une nouvelle base de données ou utilisez une base de données déjà créée.

J'ai déjà créé une base de données. J'utiliserai le nom de ma base de données créée existante, Société.

USE Company;

Company est le nom de la base de données.

Ceux qui n'ont pas créé de base de données suivent la requête ci-dessous pour créer la base de données :

CREATE DATABASE database_name;

Après avoir créé la base de données, sélectionnez la base de données en utilisant le mot-clé USE suivi du nom de la base de données.

Étape 2 :Créez un nouveau tableau ou utilisez un tableau déjà existant :

J'ai déjà créé un tableau. J'utiliserai la table existante nommée Employés.

Pour créer les nouvelles tables, suivez la syntaxe CREATE TABLE ci-dessous :

CREATE TABLE table_name(

columnname1 datatype(column size),

columnname2 datatype(column size),

columnname3 datatype(column size)

);

Étape 3 :Insérez les enregistrements dans la table nouvellement créée à l'aide de la requête INSERT et affichez les enregistrements à l'aide de la requête SELECT.

Utilisez la syntaxe suivante pour insérer de nouveaux enregistrements dans la table :

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

Utilisez la syntaxe suivante pour afficher les enregistrements de la table :

SELECT * FROM table_name;

La requête suivante affichera les enregistrements des Employés :

SELECT * FROM Employees;

Le résultat de la requête SELECT ci-dessus est :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE DÉPARTEMENT MANAGERID
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOÏDA C# 5
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGAR ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 Bombay C# 5
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 Bombay JAVA 3
4001 RAJESH GOUD 60500 Bombay TEST 4
4002 ASHWINI BAGHAT 54500 NOÏDA JAVA 3
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
5001 ARCHIT SHARMA 55500 DELHI TEST 4
5002 SANKET CHAUHAN 70000 HYDERABAD JAVA 3
5003 ROSHAN NEHTE 48500 CHANDIGAR C# 5
6001 RAHUL NIKAM 54500 BANGALORE TEST 4
6002 ATISH JADHAV 60500 BANGALORE C# 5
6003 NIKITA INGALE 65000 HYDERABAD ORACLE 1

Étape 4 :Nous sommes prêts à utiliser la clause GROUP BY dans les requêtes

Nous allons maintenant approfondir la clause GROUP BY à l'aide d'exemples

Exemple 1 : Rédigez une requête pour afficher le groupe d'enregistrements d'employés par ville.

SELECT * FROM EMPLOYEES GROUP BY CITY;

La requête ci-dessus affiche les enregistrements des employés où un employé de la même ville sera considéré comme un groupe. Par exemple, s'il y a 10 enregistrements d'employés dans la table où 3 sont de la ville de Pune, 3 sont de la ville de Mumbai, 2 sont de Hyderabad et Bangalore, alors la requête ci-dessus regroupera l'employé de la ville de Pune l'employé de la ville de Mumbai en un seul enregistrement, et ainsi de suite .

Le résultat de la requête ci-dessus :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE DÉPARTEMENT MANAGERID
6001 RAHUL NIKAM 54500 BANGALORE TEST 4
2001 PRACHI SHARMA 55500 CHANDIGAR ORACLE 1
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
5002 SANKET CHAUHAN 70000 HYDERABAD JAVA 3
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2003 RUCHIKA JAIN 50000 Bombay C# 5
1002 VAIBHAV SHARMA 60000 NOÏDA C# 5
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1

Comme nous pouvons le voir, les fiches des employés sont regroupées par ville et les fiches sont affichées par défaut dans l'ordre croissant.

Exemple 2 : Rédigez une requête pour afficher les enregistrements des employés par salaire dans l'ordre décroissant.

SELECT * FROM EMPLOYEES GROUP BY SALARY DESC; 

La requête ci-dessus affiche les enregistrements des employés où les employés ayant le même salaire seront considérés comme un groupe, et les enregistrements s'afficheront par ordre décroissant.

Le résultat de la requête ci-dessus :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE DÉPARTEMENT MANAGERID
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 Bombay TEST 4
1002 VAIBHAV SHARMA 60000 NOÏDA C# 5
3003 DEEPAM JAUHARI 58500 Bombay JAVA 3
2001 PRACHI SHARMA 55500 CHANDIGAR ORACLE 1
4002 ASHWINI BAGHAT 54500 NOÏDA JAVA 3
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2003 RUCHIKA JAIN 50000 Bombay C# 5
5003 ROSHAN NEHTE 48500 CHANDIGAR C# 5

Comme nous pouvons le voir, les enregistrements des employés sont regroupés par salaire, et les enregistrements sont affichés par ordre décroissant, comme nous mentionnons desc à la fin.

Exemple 3 : Rédigez une requête pour afficher les enregistrements des employés par salaire et par ville.

SELECT * FROM EMPLOYEES GROUP BY SALARY, CITY;

La requête ci-dessus affiche les enregistrements des employés où les employés avec le même salaire et la même ville seront considérés comme un groupe.

Par exemple, supposons que la table contienne 10 enregistrements d'employés. À partir de 10 employés, le salaire et la ville de 2 employés correspondent à deux autres employés et le salaire et la ville de six autres employés sont inégalés, alors les 6 employés seront considérés comme 6 groupes distincts, et 2 employés qui correspondent à 2 autres employés seront considérés comme un groupe . Bref, 8 groupes seront formés.

Le résultat de la requête ci-dessus :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE DÉPARTEMENT MANAGERID
5003 ROSHAN NEHTE 48500 CHANDIGAR C# 5
2003 RUCHIKA JAIN 50000 Bombay C# 5
1003 NIKHIL VANI 50500 JAIPUR FMW 2
6001 RAHUL NIKAM 54500 BANGALORE TEST 4
4002 ASHWINI BAGHAT 54500 NOÏDA JAVA 3
2001 PRACHI SHARMA 55500 CHANDIGAR ORACLE 1
5001 ARCHIT SHARMA 55500 DELHI TEST 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 Bombay JAVA 3
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
1002 VAIBHAV SHARMA 60000 NOÏDA C# 5
6002 ATISH JADHAV 60500 BANGALORE C# 5
4001 RAJESH GOUD 60500 Bombay TEST 4
6003 NIKITA INGALE 65000 HYDERABAD ORACLE 1
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
5002 SANKET CHAUHAN 70000 HYDERABAD JAVA 3

Comme nous pouvons le voir, les fiches des employés sont regroupées par salaire et par ville, et les fiches sont affichées par défaut par ordre croissant.

Exemple 4 : Rédigez une requête pour afficher les fiches des employés par ville et par service.

SELECT * FROM EMPLOYEES GROUP BY CITY, DEPARTMENT;

La requête ci-dessus affiche les enregistrements des employés où les employés sont dans la même ville, et le département sera considéré comme un groupe.

Le résultat de la requête ci-dessus :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE DÉPARTEMENT MANAGERID
6002 ATISH JADHAV 60500 BANGALORE C# 5
6001 RAHUL NIKAM 54500 BANGALORE TEST 4
5003 ROSHAN NEHTE 48500 CHANDIGAR C# 5
2001 PRACHI SHARMA 55500 CHANDIGAR ORACLE 1
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
5001 ARCHIT SHARMA 55500 DELHI TEST 4
5002 SANKET CHAUHAN 70000 HYDERABAD JAVA 3
6003 NIKITA INGALE 65000 HYDERABAD ORACLE 1
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2003 RUCHIKA JAIN 50000 Bombay C# 5
3003 DEEPAM JAUHARI 58500 Bombay JAVA 3
4001 RAJESH GOUD 60500 Bombay TEST 4
1002 VAIBHAV SHARMA 60000 NOÏDA C# 5
4002 ASHWINI BAGHAT 54500 NOÏDA JAVA 3
2002 BHAVESH JAIN 65500 PUNE FMW 2
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1

Comme nous pouvons le voir, les fiches des employés sont regroupées par ville et département, et les fiches sont affichées par défaut par ordre croissant.

Exemple 5 : Écrivez une requête pour compter la liste des employés de chaque service à partir de la table des employés.

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

La requête ci-dessus affiche le nombre d'employés dans chaque groupe de départements par département. Par exemple, six employés travaillent dans le service des ressources humaines, cinq travaillent dans un autre service.

Le résultat de la requête ci-dessus :

DÉPARTEMENT COUNT(DÉPARTEMENT)
C# 4
FMW 3
JAVA 4
ORACLE 4
TEST 3

Comme nous pouvons le voir, quatre employés travaillent dans le département C#, trois travaillent dans le département FMW, etc.

Exemple 6 : Écrivez une requête pour compter la liste des employés de chaque ville à partir de la table des employés.

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

La requête ci-dessus affiche le nombre d'employés dans chaque groupe de villes par ville. Par exemple, trois employés travaillent dans la ville de Pune, quatre travaillent dans une autre ville, etc.

Le résultat de la requête ci-dessus :

VILLE COUNT(VILLE)
BANGALORE 2
CHANDIGAR 2
DELHI 2
HYDERABAD 2
JAIPUR 2
Bombay 3
NOIDA 2
PUNE 3

Comme nous pouvons le voir, deux employés travaillent depuis la ville de Bangalore, trois depuis la ville de Mumbai, etc.

Exemple 7 : Rédigez une requête pour additionner le groupe de salaire des employés par ville.

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

Ce qui précède est utilisé pour additionner les salaires des employés regroupés par nom de ville. Par exemple, pour les employés d'une même ville, leur salaire sera la somme et considéré comme un groupe. Nous avons utilisé la fonction de somme agrégée suivie de la colonne de salaire pour ajouter le salaire.

Le résultat de la requête ci-dessus :

VILLE SALAIRE
BANGALORE 115000
CHANDIGAR 104000
DELHI 115500
HYDERABAD 135000
JAIPUR 101000
Bombay 169000
NOIDA 114500
PUNE 186500

Comme nous pouvons le voir, le salaire total de la ville de Bangalore est de 115 000, le salaire total de la ville de Chandigarh est de 104 000, ce qui correspond à l'ajout de différents salaires d'employés, mais à partir de la ville, la même approche est utilisée pour chaque ville.

Exemple 8 : Rédigez une requête pour trouver le salaire minimum de chaque département.

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

La requête ci-dessus est utilisée pour trouver le salaire minimum de l'employé de chaque département. Le salaire de l'un des employés du département Java est de 54 500, ce qui est le plus bas de tout le département Java. Le même 48500 est le salaire le plus bas payé à l'employé du département C#.

Le résultat de la requête ci-dessus :

DÉPARTEMENT MIN(SALAIRE)
C# 48500
FMW 50500
JAVA 54500
ORACLE 55500
TEST 54500

Comme nous pouvons le voir, 50500 est le salaire le plus bas payé à l'un des employés du département FMW, 55500 est le salaire le plus bas payé à l'un des employés du département ORACLE.

Exemple 9 : Écrivez une requête pour trouver le salaire minimum de chaque ville.

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

La requête ci-dessus est utilisée pour trouver le salaire maximum de chaque ville. Le salaire de l'un des employés de la ville de Pune est de 65 500, ce qui est le plus élevé de toute la ville de Pune, le même 60 500 est le salaire le plus élevé versé à l'employé de la ville de Mumbai.

Le résultat de la requête ci-dessus :

VILLE MAX(SALAIRE)
BANGALORE 60500
CHANDIGAR 55500
DELHI 60000
HYDERABAD 70000
JAIPUR 50500
Bombay 60500
NOIDA 60000
PUNE 65500

Comme nous pouvons le voir, 50500 est le salaire le plus élevé payé à l'un des employés de la ville de Jaipur, 55500 est le salaire le plus élevé payé à l'un des employés de la ville de Chandigarh.