Apache Derby - GROUP BY-Klausel

Die GROUP BY-Klausel wird mit SELECT-Anweisungen verwendet. Es wird verwendet, um bei identischen Daten Teilmengen zu bilden. Normalerweise folgt auf diese Klausel die ORDER BY-Klausel und steht hinter der WHERE-Klausel.

Syntax

Es folgt die Syntax der GROUP BY-Klausel -

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

Beispiel

Angenommen, wir haben eine Tabelle mit dem Namen Employees in der Datenbank mit den folgenden Datensätzen:

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

Die folgende SELECT-Anweisung mit der GROUP BY-Klausel gruppiert die Tabelle basierend auf dem Speicherort. Es zeigt den Gesamtbetrag des Gehalts an, das den Mitarbeitern an einem Standort gewährt wird.

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

Dies erzeugt die folgende Ausgabe -

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

Auf die gleiche Weise wird bei der folgenden Abfrage der durchschnittliche Betrag ermittelt, der für die Mitarbeiter als Gehalt an einem Standort ausgegeben wird.

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

Dies erzeugt die folgende Ausgabe -

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

Group By-Klausel JDBC-Beispiel

In diesem Abschnitt erfahren Sie, wie Sie die Group By-Klausel verwenden und CURD-Operationen für eine Tabelle in der Apache Derby-Datenbank mithilfe der JDBC-Anwendung ausführen.

Wenn Sie den Derby-Netzwerkserver über den Netzwerkclient anfordern möchten, stellen Sie sicher, dass der Server betriebsbereit ist. Der Klassenname für den Netzwerkclienttreiber lautet org.apache.derby.jdbc.ClientDriver und die URL lautet jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD""

Führen Sie die folgenden Schritte aus, um die Group By-Klausel zu verwenden und CURD-Operationen für eine Tabelle in Apache Derby auszuführen

Schritt 1: Registrieren Sie den Treiber

Um mit der Datenbank zu kommunizieren, müssen Sie zunächst den Treiber registrieren. DasforName() Methode der Klasse ClassAkzeptiert einen String-Wert, der einen Klassennamen darstellt, lädt ihn in den Speicher, der ihn automatisch registriert. Registrieren Sie den Treiber mit dieser Methode.

Schritt 2: Stellen Sie die Verbindung her

Im Allgemeinen besteht der erste Schritt zur Kommunikation mit der Datenbank darin, eine Verbindung mit der Datenbank herzustellen. DasConnectionKlasse repräsentiert die physische Verbindung mit einem Datenbankserver. Sie können ein Verbindungsobjekt erstellen, indem Sie das aufrufengetConnection() Methode der DriverManagerKlasse. Erstellen Sie mit dieser Methode eine Verbindung.

Schritt 3: Erstellen Sie ein Anweisungsobjekt

Sie müssen eine erstellen Statement oder PreparedStatement oder, CallableStatementObjekte zum Senden von SQL-Anweisungen an die Datenbank. Sie können diese mit den Methoden erstellencreateStatement(), prepareStatement() and, prepareCall()beziehungsweise. Erstellen Sie eines dieser Objekte mit der entsprechenden Methode.

Schritt 4: Führen Sie die Abfrage aus

Nachdem Sie eine Anweisung erstellt haben, müssen Sie sie ausführen. DasStatement Klasse bietet verschiedene Methoden, um eine Abfrage wie die auszuführen execute()Methode zum Ausführen einer Anweisung, die mehr als eine Ergebnismenge zurückgibt. DasexecuteUpdate()Methode wird verwendet, um Abfragen wie INSERT, UPDATE, DELETE auszuführen. DasexecuteQuery()Methode gibt Daten zurück. Verwenden Sie eine dieser Methoden und führen Sie die zuvor erstellte Anweisung aus.

Beispiel

Das folgende JDBC-Beispiel zeigt die Verwendung Group ByKlausel und führen CURD-Operationen für eine Tabelle in Apache Derby mit dem JDBC-Programm aus. Hier stellen wir mithilfe des eingebetteten Treibers eine Verbindung zu einer Datenbank mit dem Namen sampleDB her (wird erstellt, wenn sie nicht vorhanden ist).

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(" ");
      }
   }
}

Ausgabe

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe:

Location: Hyderabad
Sum of salary: 120000

Location: Lucknow
Sum of salary: 71000

Location: Vishakhapatnam
Sum of salary: 93000