hive RECURSIVE 的使用例子
时间: 2023-08-02 13:45:08 浏览: 375
Hive 中的 RECURSIVE 可以用来处理递归查询。以下是一个简单的例子:
假设你有一个员工表格 employee,其中包含员工的 ID,姓名,上级 ID,薪资等信息。你想要查询某个员工及其所有下属的薪资总和,可以使用递归查询来实现。
首先,你需要创建一个临时表格来存储递归查询的结果:
```
CREATE TEMPORARY TABLE employee_temp (
id INT,
name STRING,
salary INT,
manager_id INT
);
```
然后,你需要将员工表格 employee 中的数据插入到这个临时表格中:
```
INSERT INTO employee_temp SELECT * FROM employee;
```
接下来,你可以使用 RECURSIVE 关键字来执行递归查询,并使用 WITH 子句来定义递归查询的初始条件和递归条件:
```
WITH RECURSIVE subordinates AS (
SELECT id, name, salary, manager_id
FROM employee_temp
WHERE id = 1 -- 初始条件:查询 ID 为 1 的员工及其下属
UNION ALL
SELECT e.id, e.name, e.salary, e.manager_id
FROM employee_temp e
JOIN subordinates s ON s.id = e.manager_id -- 递归条件:查询下属员工
)
SELECT SUM(salary) FROM subordinates; -- 计算薪资总和
```
在这个例子中,我们首先定义了一个名为 subordinates 的递归查询,其中初始条件是查询 ID 为 1 的员工及其下属,递归条件是查询下属员工。然后,我们从 subordinates 查询结果中计算薪资总和。注意,递归查询必须包含 UNION ALL 子句,而不是 UNION 子句,因为后者会自动去重,而在递归查询中这是不希望的。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)