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