Apache Derby - Clausola GROUP BY

La clausola GROUP BY viene utilizzata con le istruzioni SELECT. Viene utilizzato per formare sottoinsiemi in caso di dati identici. Di solito, questa clausola è seguita dalla clausola ORDER BY e collocata dopo la clausola WHERE.

Sintassi

Di seguito è riportata la sintassi della clausola GROUP BY:

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

Esempio

Supponiamo di avere una tabella denominata Employees nel database con i seguenti record:

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

La seguente istruzione SELECT con la clausola GROUP BY raggruppa la tabella in base alla posizione. Visualizza l'importo totale dello stipendio dato ai dipendenti in una posizione.

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

Questo genererà il seguente output:

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

Allo stesso modo, la seguente query trova l'importo medio speso per i dipendenti come stipendio in una posizione.

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

Questo genererà il seguente output:

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

Esempio JDBC della clausola Group By

Questa sezione spiega come utilizzare la clausola Group By ed eseguire operazioni CURD su una tabella nel database Apache Derby utilizzando l'applicazione JDBC.

Se desideri richiedere il server di rete Derby utilizzando il client di rete, assicurati che il server sia attivo e funzionante. Il nome della classe per il driver del client di rete è org.apache.derby.jdbc.ClientDriver e l'URL è jdbc: derby: // localhost: 1527 /DATABASE_NAME;creare = vero; utente =USER_NAME;passw ord =PASSWORD"

Seguire i passaggi indicati di seguito per utilizzare la clausola Group By ed eseguire operazioni CURD su una tabella in Apache Derby

Passaggio 1: registra il driver

Per comunicare con il database, prima di tutto, è necessario registrare il conducente. IlforName() metodo della classe Classaccetta un valore String che rappresenta il nome di una classe lo carica nella memoria, che lo registra automaticamente. Registra il driver utilizzando questo metodo.

Passaggio 2: ottieni la connessione

In generale, il primo passo che facciamo per comunicare con il database è connetterci con esso. IlConnectionclass rappresenta la connessione fisica con un server di database. È possibile creare un oggetto connessione richiamando il filegetConnection() metodo del DriverManagerclasse. Crea una connessione usando questo metodo.

Passaggio 3: creare un oggetto istruzione

Devi creare un file Statement o PreparedStatement o, CallableStatementoggetti per inviare istruzioni SQL al database. Puoi crearli usando i metodicreateStatement(), prepareStatement() and, prepareCall()rispettivamente. Crea uno di questi oggetti utilizzando il metodo appropriato.

Passaggio 4: eseguire la query

Dopo aver creato un'istruzione, è necessario eseguirla. IlStatement class fornisce vari metodi per eseguire una query come il execute()metodo per eseguire un'istruzione che restituisce più di un set di risultati. IlexecuteUpdate()viene utilizzato per eseguire query come INSERT, UPDATE, DELETE. IlexecuteQuery()il metodo restituisce i dati. Utilizzare uno di questi metodi ed eseguire l'istruzione creata in precedenza.

Esempio

Il seguente esempio JDBC dimostra come utilizzare Group Byed eseguire le operazioni CURD su una tabella in Apache Derby utilizzando il programma JDBC. Qui, ci stiamo connettendo a un database denominato sampleDB (creerà se non esiste) utilizzando il driver incorporato.

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

Produzione

Eseguendo il programma sopra, otterrai il seguente output:

Location: Hyderabad
Sum of salary: 120000

Location: Lucknow
Sum of salary: 71000

Location: Vishakhapatnam
Sum of salary: 93000