Apache Derby - klauzula GROUP BY

Klauzula GROUP BY jest używana z instrukcjami SELECT. Służy do tworzenia podzbiorów w przypadku identycznych danych. Zwykle po tej klauzuli występuje klauzula ORDER BY i umieszczana po klauzuli WHERE.

Składnia

Poniżej znajduje się składnia klauzuli GROUP BY -

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

Przykład

Załóżmy, że w bazie danych mamy tabelę o nazwie Pracownicy z następującymi rekordami -

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

Poniższa instrukcja SELECT z klauzulą ​​GROUP BY grupuje tabelę na podstawie lokalizacji. Wyświetla łączną kwotę wynagrodzenia przekazanego pracownikom w danej lokalizacji.

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

Spowoduje to wygenerowanie następującego wyniku -

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

W ten sam sposób następujące zapytanie znajduje średnią kwotę wydaną na pracowników jako wynagrodzenie w danej lokalizacji.

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

Spowoduje to wygenerowanie następującego wyniku -

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

Przykład JDBC dla klauzuli Group By

W tej sekcji przedstawiono sposób korzystania z klauzuli Group By i wykonywania operacji CURD na tabeli w bazie danych Apache Derby za pomocą aplikacji JDBC.

Jeśli chcesz zażądać serwera sieciowego Derby za pomocą klienta sieciowego, upewnij się, że serwer jest uruchomiony i działa. Nazwa klasy sterownika klienta sieci to org.apache.derby.jdbc.ClientDriver, a adres URL to jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD"

Wykonaj poniższe czynności, aby użyć klauzuli Group By i wykonać operacje CURD na tabeli w Apache Derby

Krok 1: Zarejestruj sterownik

Aby komunikować się z bazą danych, należy przede wszystkim zarejestrować sterownik. PlikforName() metoda klasy Classakceptuje wartość String reprezentującą nazwę klasy, ładuje ją do pamięci, która automatycznie ją rejestruje. Zarejestruj sterownik za pomocą tej metody.

Krok 2: Uzyskaj połączenie

Ogólnie rzecz biorąc, pierwszym krokiem, jaki robimy, aby komunikować się z bazą danych, jest połączenie się z nią. PlikConnectionklasa reprezentuje fizyczne połączenie z serwerem bazy danych. Możesz utworzyć obiekt połączenia, wywołującgetConnection() metoda DriverManagerklasa. Utwórz połączenie za pomocą tej metody.

Krok 3: Utwórz obiekt instrukcji

Musisz utworzyć plik Statement lub PreparedStatement lub, CallableStatementobiekty do wysyłania instrukcji SQL do bazy danych. Możesz je utworzyć za pomocą metodcreateStatement(), prepareStatement() and, prepareCall()odpowiednio. Utwórz jeden z tych obiektów przy użyciu odpowiedniej metody.

Krok 4: Wykonaj zapytanie

Po utworzeniu instrukcji musisz ją wykonać. PlikStatement klasa zapewnia różne metody wykonywania zapytania, takie jak execute()metoda, aby wykonać instrukcję, która zwraca więcej niż jeden zestaw wyników. PlikexecuteUpdate()służy do wykonywania zapytań, takich jak INSERT, UPDATE, DELETE. PlikexecuteQuery()metoda zwraca dane. Użyj jednej z tych metod i wykonaj instrukcję utworzoną wcześniej.

Przykład

Poniższy przykład JDBC demonstruje, jak używać Group Byklauzula i wykonaj operacje CURD na tabeli w Apache Derby za pomocą programu JDBC. Tutaj łączymy się z bazą danych o nazwie sampleDB (utworzymy, jeśli nie istnieje) za pomocą wbudowanego sterownika.

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

Wynik

Wykonując powyższy program, otrzymasz następujące dane wyjściowe -

Location: Hyderabad
Sum of salary: 120000

Location: Lucknow
Sum of salary: 71000

Location: Vishakhapatnam
Sum of salary: 93000