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