Este capítulo explica los detalles de cláusula GROUP BY en una instrucción SELECT. La cláusula GROUP BY se usa para agrupar todos los registros de un conjunto de resultados con una colección particular columna. Se utiliza para realizar una consulta a un grupo de registros.
La sintaxis de cláusula GROUP BY es la siguiente:
SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [HAVING having_condition] [ORDER BY col_list]] [LIMIT number];
Tomemos un ejemplo de SELECT…de la cláusula GROUP. Asumir tabla de empleados como se indica a continuación, con el Id, el nombre, el sueldo, la designación, y Depto. Generar una consulta para recuperar el número de empleados de cada departamento.
+------+--------------+-------------+-------------------+--------+ | ID | Name | Salary | Designation | Dept | +------+--------------+-------------+-------------------+--------+ |1201 | Gopal | 45000 | Technical manager | TP | |1202 | Manisha | 45000 | Proofreader | PR | |1203 | Masthanvali | 40000 | Technical writer | TP | |1204 | Krian | 45000 | Proofreader | PR | |1205 | Kranthi | 30000 | Op Admin | Admin | +------+--------------+-------------+-------------------+--------+
La siguiente consulta recupera los detalles de empleado con el escenario anterior.
hive> SELECT Dept,count(*) FROM employee GROUP BY DEPT;
El éxito de la ejecución de la consulta, se llega a ver la siguiente respuesta:
+------+--------------+ | Dept | Count(*) | +------+--------------+ |Admin | 1 | |PR | 2 | |TP | 3 | +------+--------------+
A continuación se muestra el programa JDBC para aplicar la cláusula Group By para el ejemplo dado.
import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveQLGroupBy { private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver"; public static void main(String[] args) throws SQLException { // Register driver and create driver instance Class.forName(driverName); // get connection Connection con = DriverManager. getConnection("jdbc:hive://localhost:10000/userdb", "", ""); // create statement Statement stmt = con.createStatement(); // execute statement Resultset res = stmt.executeQuery(“SELECT Dept,count(*) ” + “FROM employee GROUP BY DEPT; ”); System.out.println(" Dept \t count(*)"); while (res.next()) { System.out.println(res.getString(1) + " " + res.getInt(2)); } con.close(); } }
El programa se guarda en un archivo llamado HiveQLGroupBy.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveQLGroupBy.java $ java HiveQLGroupBy
Dept Count(*) Admin 1 PR 2 TP 3