HiveQL - Pilih-Urutkan Menurut

Bab ini menjelaskan cara menggunakan klausa ORDER BY dalam pernyataan SELECT. Klausa ORDER BY digunakan untuk mengambil detail berdasarkan satu kolom dan mengurutkan hasil yang ditetapkan dengan urutan naik atau turun.

Sintaksis

Diberikan di bawah ini adalah sintaks dari klausa 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];

Contoh

Mari kita ambil contoh untuk klausa SELECT ... ORDER BY. Asumsikan tabel karyawan seperti yang diberikan di bawah ini, dengan bidang bernama Id, Nama, Gaji, Penunjukan, dan Departemen. Buat kueri untuk mengambil detail karyawan secara berurutan dengan menggunakan nama Departemen.

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

Kueri berikut mengambil detail karyawan menggunakan skenario di atas:

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

Saat eksekusi kueri berhasil, Anda akan melihat respons berikut:

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

Program JDBC

Berikut adalah program JDBC untuk menerapkan klausa Order By untuk contoh yang diberikan.

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

Simpan program dalam file bernama HiveQLOrderBy.java. Gunakan perintah berikut untuk mengkompilasi dan menjalankan program ini.

$ javac HiveQLOrderBy.java
$ java HiveQLOrderBy

Keluaran:

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