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