Apache Derby - Clause GROUP BY

La clause GROUP BY est utilisée avec les instructions SELECT. Il est utilisé pour former des sous-ensembles en cas de données identiques. Habituellement, cette clause est suivie de la clause ORDER BY et placée après la clause WHERE.

Syntaxe

Voici la syntaxe de la clause GROUP BY -

ij>SELECT column1, column2, . . . table_name GROUP BY column1, column2, . . .;

Exemple

Supposons que nous ayons une table nommée Employés dans la base de données avec les enregistrements suivants -

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Rahul |39000 |Lucknow
3 |Renuka |50000 |Hyderabad
4 |Archana |15000 |Vishakhapatnam
5 |Kalyan |40000 |Hyderabad
6 |Trupthi |45000 |Vishakhapatnam
7 |Raghav |12000 |Lucknow
8 |Suchatra |33000 |Vishakhapatnam
9 |Rizwan |20000 |Lucknow

L'instruction SELECT suivante avec la clause GROUP BY regroupe la table en fonction de l'emplacement. Il affiche le montant total du salaire versé aux employés sur un site.

ij> SELECT Location, SUM(Salary) from Employees GROUP BY Location;

Cela générera la sortie suivante -

LOCATION |2
-------------------------------------------------------
Hyderabad |120000
Lucknow |71000
Vishakhapatnam |93000
3 rows selected

De la même manière, la requête suivante trouve le montant moyen dépensé pour les employés en tant que salaire dans un emplacement.

ij> SELECT Location, AVG(Salary) from Employees GROUP BY Location;

Cela générera la sortie suivante -

LOCATION |2
-----------------------------------------------------
Hyderabad |40000
Lucknow |23666
Vishakhapatnam |31000
3 rows selected

Exemple de clause JDBC Group By

Cette section vous apprend à utiliser la clause Group By et à effectuer des opérations CURD sur une table de la base de données Apache Derby à l'aide de l'application JDBC.

Si vous souhaitez demander le serveur réseau Derby à l'aide du client réseau, assurez-vous que le serveur est opérationnel. Le nom de classe du pilote client réseau est org.apache.derby.jdbc.ClientDriver et l'URL est jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; utilisateur =USER_NAME;passw ord =PASSWORD"

Suivez les étapes ci-dessous pour utiliser la clause Group By et effectuer des opérations CURD sur une table dans Apache Derby

Étape 1: enregistrer le pilote

Pour communiquer avec la base de données, vous devez tout d'abord enregistrer le pilote. leforName() méthode de la classe Classaccepte une valeur String représentant un nom de classe la charge dans la mémoire, qui l'enregistre automatiquement. Enregistrez le pilote en utilisant cette méthode.

Étape 2: Obtenez la connexion

En général, la première étape que nous faisons pour communiquer avec la base de données est de nous y connecter. leConnectionclass représente la connexion physique avec un serveur de base de données. Vous pouvez créer un objet de connexion en appelant legetConnection() méthode de la DriverManagerclasse. Créez une connexion à l'aide de cette méthode.

Étape 3: créer un objet instruction

Vous devez créer un Statement ou PreparedStatement ou, CallableStatementobjets pour envoyer des instructions SQL à la base de données. Vous pouvez les créer en utilisant les méthodescreateStatement(), prepareStatement() and, prepareCall()respectivement. Créez l'un de ces objets en utilisant la méthode appropriée.

Étape 4: exécutez la requête

Après avoir créé une instruction, vous devez l'exécuter. leStatement classe fournit diverses méthodes pour exécuter une requête comme execute()pour exécuter une instruction qui renvoie plusieurs ensembles de résultats. leexecuteUpdate()La méthode est utilisée pour exécuter des requêtes telles que INSERT, UPDATE, DELETE. leexecuteQuery()La méthode renvoie des données. Utilisez l'une de ces méthodes et exécutez l'instruction créée précédemment.

Exemple

L'exemple JDBC suivant montre comment utiliser Group Byet effectuez des opérations CURD sur une table dans Apache Derby à l'aide du programme JDBC. Ici, nous nous connectons à une base de données nommée sampleDB (créera si elle n'existe pas) en utilisant le pilote intégré.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class GroupByClauseExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      stmt.execute("CREATE TABLE EmployeesData( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))");
      stmt.execute("INSERT INTO EmployeesData(Name, Salary, Location) "
         + "VALUES ('Amit', 30000, 'Hyderabad'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Renuka', 50000, 'Hyderabad'), "
         + "('Archana', 15000, 'Vishakhapatnam'), "
         + "('Kalyan', 40000, 'Hyderabad'), "
         + "('Trupthi', 45000, 'Vishakhapatnam'), "
         + "('Raghav', 12000, 'Lucknow'), "
         + "('Suchatra', 33000, 'Vishakhapatnam'), "
         + "('Rizwan', 20000, 'Lucknow')");

      //Executing the query
      String query = "SELECT Location, SUM(Salary) from EmployeesData GROUP BY Location";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Location: "+rs.getString(1));
         System.out.println("Sum of salary: "+rs.getString(2));
         System.out.println(" ");
      }
   }
}

Production

Lors de l'exécution du programme ci-dessus, vous obtiendrez la sortie suivante -

Location: Hyderabad
Sum of salary: 120000

Location: Lucknow
Sum of salary: 71000

Location: Vishakhapatnam
Sum of salary: 93000