En este capítulo se explica cómo utilizar la cláusula ORDER BY de una instrucción SELECT. La cláusula ORDER BY se usa para recuperar los detalles basándose en una columna y ordenar el conjunto de resultados por orden ascendente o descendente.
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];
Tomemos un ejemplo para SELECCIONAR... de la cláusula order by. Asumir tabla de empleados como se indica a continuación, con los campos nombre Id, el nombre, el sueldo, la designación, y Depto. Generar una consulta para recuperar los detalles de empleado con el fin de utilizar nombre de 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 de empleado con el escenario anterior:
hive> SELECT Id, Name, Dept FROM employee ORDER BY DEPT;
El éxito de la ejecución de la consulta, se llega a 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 | +------+--------------+-------------+-------------------+--------+
Aquí está el programa JDBC para la aplicación de 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(); } }
El programa se guarda en un archivo llamado HiveQLOrderBy.java. Utilice los siguientes comandos para compilar y ejecutar este programa.
$ javac HiveQLOrderBy.java $ java HiveQLOrderBy
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