- 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://127.0.0.1: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
广告