HiveQL - Chọn-Đặt hàng Theo

Chương này giải thích cách sử dụng mệnh đề ORDER BY trong câu lệnh SELECT. Mệnh đề ORDER BY được sử dụng để lấy các chi tiết dựa trên một cột và sắp xếp kết quả được thiết lập theo thứ tự tăng dần hoặc giảm dần.

Cú pháp

Dưới đây là cú pháp của mệnh đề 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];

Thí dụ

Hãy để chúng tôi lấy một ví dụ cho mệnh đề SELECT ... ORDER BY. Giả sử bảng nhân viên như được đưa ra bên dưới, với các trường có tên Id, Tên, Lương, Chức vụ và Phòng ban Tạo truy vấn để truy xuất chi tiết nhân viên theo thứ tự bằng cách sử dụng tên Phòng ban.

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

Truy vấn sau truy xuất chi tiết nhân viên bằng cách sử dụng tình huống trên:

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

Khi thực hiện thành công truy vấn, bạn sẽ thấy phản hồi sau:

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

Chương trình JDBC

Đây là chương trình JDBC để áp dụng mệnh đề Order By cho ví dụ đã cho.

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

Lưu chương trình trong một tệp có tên HiveQLOrderBy.java. Sử dụng các lệnh sau để biên dịch và thực thi chương trình này.

$ javac HiveQLOrderBy.java
$ java HiveQLOrderBy

Đầu ra:

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