HiveQL - Select-Group By


Advertisements

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.

Sintaxis

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];

Ejemplo

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         | 
+------+--------------+

Programa JDBC

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

Salida:

 Dept     Count(*)
 Admin       1
 PR          2
 TP          3
Advertisements