
- Hive 教程
- Hive - 主頁
- Hive - 簡介
- Hive - 安裝
- Hive - 資料型別
- Hive - 建立資料庫
- Hive - 刪除資料庫
- Hive - 建立表
- Hive - 修改表
- Hive - 刪除表
- Hive - 分割槽
- Hive - 內建運算子
- Hive - 內建函式
- Hive - 檢視和索引
- Hive 實用資源
- Hive - 問題和答案
- Hive - 快速指南
- Hive - 實用資源
HiveQL - Select-Order By
本章介紹如何在 SELECT 語句中使用 ORDER BY 子句。ORDER BY 子句用於根據一列檢索詳細資訊,並按升序或降序對結果集進行排序。
語法
下面給出 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];
示例
我們舉一個 SELECT...ORDER BY 子句的示例。假設員工表如下所示,其欄位名為 Id、Name、Salary、Designation 和 Dept。生成一個查詢,按照部門名稱檢索員工詳細資訊。
+------+--------------+-------------+-------------------+--------+ | 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 | +------+--------------+-------------+-------------------+--------+
使用上述場景可以檢索員工詳細資訊的查詢如下
hive> SELECT Id, Name, Dept FROM employee ORDER BY DEPT;
成功執行查詢後,將看到以下響應
+------+--------------+-------------+-------------------+--------+ | 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 程式
以下是針對給定的示例應用 Order By 子句的 JDBC 程式。
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://: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(); } }
將該程式另存為一個名為 HiveQLOrderBy.java 的檔案。使用以下命令編譯和執行此程式。
$ 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
廣告