Apache Derby - Cláusula GROUP BY
La cláusula GROUP BY se utiliza con sentencias SELECT. Se utiliza para formar subconjuntos en caso de datos idénticos. Por lo general, esta cláusula va seguida de la cláusula ORDER BY y se coloca después de la cláusula WHERE.
Sintaxis
A continuación se muestra la sintaxis de la cláusula GROUP BY:
ij>SELECT column1, column2, . . . table_name GROUP BY column1, column2, . . .;
Ejemplo
Supongamos que tenemos una tabla llamada Empleados en la base de datos con los siguientes registros:
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 siguiente instrucción SELECT con la cláusula GROUP BY agrupa la tabla según la ubicación. Muestra la cantidad total de salario otorgada a los empleados en una ubicación.
ij> SELECT Location, SUM(Salary) from Employees GROUP BY Location;
Esto generará la siguiente salida:
LOCATION |2
-------------------------------------------------------
Hyderabad |120000
Lucknow |71000
Vishakhapatnam |93000
3 rows selected
De la misma manera, la siguiente consulta encuentra el monto promedio gastado en los empleados como salario en una ubicación.
ij> SELECT Location, AVG(Salary) from Employees GROUP BY Location;
Esto generará la siguiente salida:
LOCATION |2
-----------------------------------------------------
Hyderabad |40000
Lucknow |23666
Vishakhapatnam |31000
3 rows selected
Ejemplo de JDBC de cláusula Group By
Esta sección le enseña cómo usar la cláusula Agrupar por y realizar operaciones CURD en una tabla en la base de datos Apache Derby usando la aplicación JDBC.
Si desea solicitar el servidor de red Derby mediante un cliente de red, asegúrese de que el servidor esté en funcionamiento. El nombre de clase del controlador del cliente de red es org.apache.derby.jdbc.ClientDriver y la URL es jdbc: derby: // localhost: 1527 /DATABASE_NAME;crear = verdadero; usuario =USER_NAME;passw ord =PASSWORD"
Siga los pasos que se indican a continuación para usar la cláusula Group By y realizar operaciones CURD en una tabla en Apache Derby
Paso 1: registre el controlador
Para comunicarse con la base de datos, en primer lugar, debe registrar el controlador. losforName() método de la clase Classacepta un valor de cadena que representa un nombre de clase, lo carga en la memoria, que lo registra automáticamente. Registre el controlador utilizando este método.
Paso 2: obtén la conexión
En general, el primer paso que hacemos para comunicarnos con la base de datos es conectarnos con ella. losConnectionclase representa la conexión física con un servidor de base de datos. Puede crear un objeto de conexión invocando elgetConnection() método del DriverManagerclase. Cree una conexión con este método.
Paso 3: crea un objeto de declaración
Necesitas crear un Statement o PreparedStatement o, CallableStatementobjetos para enviar sentencias SQL a la base de datos. Puedes crearlos usando los métodoscreateStatement(), prepareStatement() and, prepareCall()respectivamente. Cree cualquiera de estos objetos utilizando el método apropiado.
Paso 4: ejecutar la consulta
Después de crear una declaración, debe ejecutarla. losStatement La clase proporciona varios métodos para ejecutar una consulta como la execute()método para ejecutar una declaración que devuelve más de un conjunto de resultados. losexecuteUpdate()El método se utiliza para ejecutar consultas como INSERT, UPDATE, DELETE. losexecuteQuery()El método devuelve datos. Utilice cualquiera de estos métodos y ejecute la instrucción creada anteriormente.
Ejemplo
El siguiente ejemplo de JDBC demuestra cómo utilizar Group Bycláusula y realice operaciones CURD en una tabla en Apache Derby utilizando el programa JDBC. Aquí, nos estamos conectando a una base de datos llamada sampleDB (se creará si no existe) usando el controlador integrado.
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(" ");
}
}
}
Salida
Al ejecutar el programa anterior, obtendrá el siguiente resultado:
Location: Hyderabad
Sum of salary: 120000
Location: Lucknow
Sum of salary: 71000
Location: Vishakhapatnam
Sum of salary: 93000