HiveQL - Seleccionar orden por
Este capítulo explica cómo usar la cláusula ORDER BY en una instrucción SELECT. La cláusula ORDER BY se utiliza para recuperar los detalles en función de una columna y ordenar el conjunto de resultados en orden ascendente o descendente.
Sintaxis
A continuación se muestra la sintaxis de la cláusula ORDER BY:
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 para la cláusula SELECT ... ORDER BY. Suponga la tabla de empleados como se indica a continuación, con los campos denominados Id, Nombre, Salario, Designación y Departamento. Genere una consulta para recuperar los detalles del empleado en orden utilizando el nombre del 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 | 40000 | Hr Admin | HR |
|1205 | Kranthi | 30000 | Op Admin | Admin |
+------+--------------+-------------+-------------------+--------+
La siguiente consulta recupera los detalles del empleado utilizando el escenario anterior:
hive> SELECT Id, Name, Dept FROM employee ORDER BY DEPT;
En la ejecución exitosa de la consulta, puede ver la siguiente respuesta:
+------+--------------+-------------+-------------------+--------+
| ID | Name | Salary | Designation | Dept |
+------+--------------+-------------+-------------------+--------+
|1205 | Kranthi | 30000 | Op Admin | Admin |
|1204 | Krian | 40000 | Hr Admin | HR |
|1202 | Manisha | 45000 | Proofreader | PR |
|1201 | Gopal | 45000 | Technical manager | TP |
|1203 | Masthanvali | 40000 | Technical writer | TP |
+------+--------------+-------------+-------------------+--------+
Programa JDBC
Aquí está el programa JDBC para aplicar la cláusula Order 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 HiveQLOrderBy {
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 * FROM employee ORDER BY DEPT;");
System.out.println(" ID \t Name \t Salary \t Designation \t Dept ");
while (res.next()) {
System.out.println(res.getInt(1) + " " + res.getString(2) + " " + res.getDouble(3) + " " + res.getString(4) + " " + res.getString(5));
}
con.close();
}
}
Guarde el programa en un archivo llamado HiveQLOrderBy.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveQLOrderBy.java
$ java HiveQLOrderBy
Salida:
ID Name Salary Designation Dept
1205 Kranthi 30000 Op Admin Admin
1204 Krian 40000 Hr Admin HR
1202 Manisha 45000 Proofreader PR
1201 Gopal 45000 Technical manager TP
1203 Masthanvali 40000 Technical writer TP
1204 Krian 40000 Hr Admin HR