Apache Derby - Điều khoản GROUP BY

Mệnh đề GROUP BY được sử dụng với các câu lệnh SELECT. Nó được sử dụng để tạo thành các tập hợp con trong trường hợp dữ liệu giống hệt nhau. Thông thường, mệnh đề này được theo sau bởi mệnh đề ORDER BY và được đặt sau mệnh đề WHERE.

Cú pháp

Sau đây là cú pháp của mệnh đề GROUP BY:

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

Thí dụ

Giả sử chúng ta có một bảng có tên Nhân viên trong cơ sở dữ liệu với các bản ghi sau:

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

Câu lệnh SELECT sau đây với mệnh đề GROUP BY nhóm bảng dựa trên vị trí. Nó hiển thị tổng số tiền lương được trả cho nhân viên tại một địa điểm.

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

Điều này sẽ tạo ra kết quả sau:

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

Theo cách tương tự, truy vấn sau tìm số tiền trung bình được chi cho nhân viên dưới dạng tiền lương tại một địa điểm.

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

Điều này sẽ tạo ra kết quả sau:

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

Ví dụ về mệnh đề Group By JDBC

Phần này hướng dẫn bạn cách sử dụng mệnh đề Group By và thực hiện các thao tác CURD trên một bảng trong cơ sở dữ liệu Apache Derby bằng ứng dụng JDBC.

Nếu bạn muốn yêu cầu máy chủ mạng Derby sử dụng máy khách mạng, hãy đảm bảo rằng máy chủ đang hoạt động. Tên lớp cho trình điều khiển máy khách mạng là org.apache.derby.jdbc.ClientDriver và URL là jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD"

Làm theo các bước dưới đây để sử dụng mệnh đề Group By và thực hiện các thao tác CURD trên bảng trong Apache Derby

Bước 1: Đăng ký tài xế

Để giao tiếp với cơ sở dữ liệu, trước hết, bạn cần đăng ký trình điều khiển. CácforName() phương pháp của lớp Classchấp nhận một giá trị Chuỗi đại diện cho một tên lớp sẽ tải nó vào bộ nhớ, nó sẽ tự động đăng ký nó. Đăng ký trình điều khiển bằng cách sử dụng phương pháp này.

Bước 2: Nhận kết nối

Nói chung, bước đầu tiên chúng ta làm để giao tiếp với cơ sở dữ liệu là kết nối với nó. CácConnectionlớp đại diện cho kết nối vật lý với một máy chủ cơ sở dữ liệu. Bạn có thể tạo một đối tượng kết nối bằng cách gọigetConnection() phương pháp của DriverManagerlớp học. Tạo kết nối bằng phương pháp này.

Bước 3: Tạo đối tượng câu lệnh

Bạn cần tạo một Statement hoặc là PreparedStatement hoặc là, CallableStatementđối tượng để gửi câu lệnh SQL đến cơ sở dữ liệu. Bạn có thể tạo chúng bằng các phương phápcreateStatement(), prepareStatement() and, prepareCall()tương ứng. Tạo một trong hai đối tượng này bằng phương pháp thích hợp.

Bước 4: Thực hiện truy vấn

Sau khi tạo một câu lệnh, bạn cần thực thi nó. CácStatement lớp cung cấp các phương thức khác nhau để thực hiện một truy vấn như execute()để thực hiện một câu lệnh trả về nhiều hơn một tập kết quả. CácexecuteUpdate()phương thức được sử dụng để thực hiện các truy vấn như INSERT, UPDATE, DELETE. CácexecuteQuery()phương thức trả về dữ liệu. Sử dụng một trong hai phương pháp này và thực hiện câu lệnh đã tạo trước đó.

Thí dụ

Ví dụ sau JDBC trình bày cách sử dụng Group Byvà thực hiện các phép toán CURD trên bảng trong Apache Derby bằng chương trình JDBC. Ở đây, chúng tôi đang kết nối với cơ sở dữ liệu có tên sampleDB (sẽ tạo nếu nó không tồn tại) bằng cách sử dụng trình điều khiển nhúng.

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

Đầu ra

Khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau:

Location: Hyderabad
Sum of salary: 120000

Location: Lucknow
Sum of salary: 71000

Location: Vishakhapatnam
Sum of salary: 93000