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