本章介绍了SELECT语句的GROUP BY子句。GROUP BY子句用于分类所有记录结果的特定集合列。它被用来查询一组记录。
语法
GROUP 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... GROUP 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 | 45000 | Proofreader | PR |
|1205 | Kranthi | 30000 | Op Admin | Admin |
+------+--------------+-------------+-------------------+--------+
下面使用上述业务情景查询检索员工的详细信息。
hive>SELECTDept,count(*)FROM employee GROUP BY DEPT;
成功执行查询后,能看到以下回应:
+------+--------------+
| Dept | Count(*) |
+------+--------------+
|Admin | 1 |
|PR | 2 |
|TP | 3 |
+------+--------------+
JDBC 程序
下面给出的是JDBC程序应用对给定的GROUP BY子句例子。
importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.Statement;importjava.sql.DriverManager;publicclassHiveQLGroupBy{privatestaticStringdriverName="org.apache.hadoop.hive.jdbc.HiveDriver";publicstaticvoidmain(String[]args)throwsSQLException{// Register driver and create driver instanceClass.forName(driverName);// get connectionConnectioncon=DriverManager.getConnection("jdbc:hive://localhost:10000/userdb","","");// create statementStatementstmt=con.createStatement();// execute statementResultsetres=stmt.executeQuery(“SELECTDept,count(*)”+“FROM employee GROUP BY DEPT;”);System.out.println(" Dept \t count(*)");while(res.next()){System.out.println(res.getString(1)+" "+res.getInt(2));}con.close();}}
保存程序在一个名为HiveQLGroupBy.java文件。使用下面的命令来编译并执行这个程序。
$ javacHiveQLGroupBy.java
$ javaHiveQLGroupBy
输出:
Dept Count(*)
Admin 1
PR 2
TP 3
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。