Hiveql-select-order-by

提供:Dev Guides
移動先:案内検索

HiveQL-選択順

この章では、SELECTステートメントでORDER BY句を使用する方法について説明します。 ORDER BY句を使用して、1つの列に基づいて詳細を取得し、昇順または降順で結果セットを並べ替えます。

構文

以下に、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];

SELECT …​ ORDER BY句の例を見てみましょう。 Id、Name、Salary、Designation、およびDeptという名前のフィールドを持つ従業員テーブルを以下のように想定します。 部門名を使用して、従業員の詳細を順番に取得するクエリを生成します。

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

次のクエリは、上記のシナリオを使用して従業員の詳細を取得します。

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

クエリが正常に実行されると、次の応答が表示されます。

+------+--------------+-------------+-------------------+--------+
| 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プログラム

次に、指定された例にOrder By句を適用するJDBCプログラムを示します。

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

HiveQLOrderBy.javaという名前のファイルにプログラムを保存します。 このプログラムをコンパイルして実行するには、次のコマンドを使用します。

$ javac HiveQLOrderBy.java
$ java HiveQLOrderBy

出力:

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