Apache Derby - пункт GROUP BY

Предложение GROUP BY используется с операторами SELECT. Он используется для формирования подмножеств в случае идентичных данных. Обычно за этим предложением следует предложение ORDER BY и помещается после предложения WHERE.

Синтаксис

Ниже приводится синтаксис предложения GROUP BY -

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

пример

Предположим, у нас есть таблица с именем Сотрудники в базе данных со следующими записями:

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

Следующий оператор SELECT с предложением GROUP BY группирует таблицу по местоположению. Он отображает общую сумму заработной платы, выплачиваемой сотрудникам на месте.

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

Это приведет к следующему выводу -

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

Таким же образом, следующий запрос находит среднюю сумму, потраченную на зарплату сотрудников в определенном месте.

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

Это приведет к следующему выводу -

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

Пример JDBC с предложением Group By

В этом разделе рассказывается, как использовать предложение Group By и выполнять операции CURD над таблицей в базе данных Apache Derby с помощью приложения JDBC.

Если вы хотите запросить сетевой сервер Derby с помощью сетевого клиента, убедитесь, что сервер запущен и работает. Имя класса для драйвера сетевого клиента - org.apache.derby.jdbc.ClientDriver, а URL-адрес - jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; пользователь =USER_NAME;пароль =PASSWORD"

Следуйте инструкциям ниже, чтобы использовать предложение Group By и выполнять операции CURD над таблицей в Apache Derby.

Шаг 1. Зарегистрируйте драйвер

Для связи с базой данных в первую очередь необходимо зарегистрировать драйвер. ВforName() метод класса Classпринимает значение String, представляющее имя класса, загружает его в память, которая автоматически регистрирует его. Зарегистрируйте драйвер, используя этот метод.

Шаг 2. Установите соединение

В общем, первый шаг, который мы делаем для связи с базой данных, - это подключение к ней. ВConnectionКласс представляет физическое соединение с сервером базы данных. Вы можете создать объект подключения, вызвавgetConnection() метод DriverManagerкласс. Создайте соединение, используя этот метод.

Шаг 3. Создайте объект утверждения

Вам нужно создать Statement или же PreparedStatement или же, CallableStatementобъекты для отправки операторов SQL в базу данных. Вы можете создать их, используя методыcreateStatement(), prepareStatement() and, prepareCall()соответственно. Создайте любой из этих объектов, используя соответствующий метод.

Шаг 4: Выполните запрос

После создания выписки необходимо ее выполнить. ВStatement класс предоставляет различные методы для выполнения запроса, например execute()для выполнения оператора, возвращающего более одного набора результатов. ВexecuteUpdate()используется для выполнения таких запросов, как INSERT, UPDATE, DELETE. ВexecuteQuery()метод возвращает данные. Используйте любой из этих методов и выполните ранее созданный оператор.

пример

Следующий пример JDBC демонстрирует, как использовать Group Byпредложение и выполнить операции CURD над таблицей в Apache Derby с помощью программы JDBC. Здесь мы подключаемся к базе данных с именем sampleDB (создаст, если она не существует), используя встроенный драйвер.

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

Вывод

При выполнении вышеуказанной программы вы получите следующий результат -

Location: Hyderabad
Sum of salary: 120000

Location: Lucknow
Sum of salary: 71000

Location: Vishakhapatnam
Sum of salary: 93000