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