HiveQL - Seç-Sırala
Bu bölüm ORDER BY yan tümcesini SELECT deyiminde nasıl kullanacağınızı açıklar. ORDER BY yan tümcesi, ayrıntıları bir sütuna göre almak ve sonuç kümesini artan veya azalan sıraya göre sıralamak için kullanılır.
Sözdizimi
Aşağıda ORDER BY yan tümcesinin sözdizimi verilmiştir:
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];
Misal
SELECT ... ORDER BY yan tümcesi için bir örnek alalım. Id, Ad, Maaş, Görev ve Bölüm adlı alanlar ile aşağıda verilen çalışan tablosunu varsayın. Departman adını kullanarak çalışan ayrıntılarını sırayla almak için bir sorgu oluşturun.
+------+--------------+-------------+-------------------+--------+
| 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 |
+------+--------------+-------------+-------------------+--------+
Aşağıdaki sorgu, yukarıdaki senaryoyu kullanarak çalışan ayrıntılarını alır:
hive> SELECT Id, Name, Dept FROM employee ORDER BY DEPT;
Sorgunun başarıyla yürütülmesi üzerine aşağıdaki yanıtı görürsünüz:
+------+--------------+-------------+-------------------+--------+
| 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 Programı
Verilen örnek için Order By cümlesini uygulamak için JDBC programı burada.
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();
}
}
Programı HiveQLOrderBy.java adlı bir dosyaya kaydedin. Bu programı derlemek ve çalıştırmak için aşağıdaki komutları kullanın.
$ javac HiveQLOrderBy.java
$ java HiveQLOrderBy
Çıktı:
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