HiveQL - Select-Order By

In diesem Kapitel wird erläutert, wie Sie die ORDER BY-Klausel in einer SELECT-Anweisung verwenden. Die ORDER BY-Klausel wird verwendet, um die Details basierend auf einer Spalte abzurufen und die Ergebnismenge in aufsteigender oder absteigender Reihenfolge zu sortieren.

Syntax

Im Folgenden wird die Syntax der ORDER BY-Klausel angegeben:

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

Beispiel

Nehmen wir ein Beispiel für die SELECT ... ORDER BY-Klausel. Nehmen Sie die unten angegebene Mitarbeitertabelle mit den Feldern ID, Name, Gehalt, Bezeichnung und Abteilung an. Generieren Sie eine Abfrage, um die Mitarbeiterdetails nacheinander unter Verwendung des Abteilungsnamens abzurufen.

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

Die folgende Abfrage ruft die Mitarbeiterdetails mithilfe des obigen Szenarios ab:

hive> SELECT Id, Name, Dept FROM employee ORDER BY DEPT;

Nach erfolgreicher Ausführung der Abfrage wird die folgende Antwort angezeigt:

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

JDBC-Programm

Hier ist das JDBC-Programm zum Anwenden der Order By-Klausel für das angegebene Beispiel.

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();
   }
}

Speichern Sie das Programm in einer Datei mit dem Namen HiveQLOrderBy.java. Verwenden Sie die folgenden Befehle, um dieses Programm zu kompilieren und auszuführen.

$ javac HiveQLOrderBy.java
$ java HiveQLOrderBy

Ausgabe:

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