返回首页

gbase数据、南大通用产品文档:GBase8s处理带有子查询的结果集

更新日期:2024年09月11日

如果通过循环来处理结果集,并且对每一行都执行了另一个查询,则可以通过移除循
环中的第二个查询,并使之成为第一个查询的子查询。普通的子查询对每个表进行评估,
相关子查询对每一行进行评估。

GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 109 -

DECLARE
CURSOR c1 IS
SELECT t1.department_id, department_name, staff
FROM departments t1,
( SELECT department_id, COUNT(*) AS staff
FROM employees
GROUP BY department_id
) t2
WHERE (t1.department_id = t2.department_id) AND staff >= 5
ORDER BY staff;
BEGIN
FOR dept IN c1
LOOP
DBMS_OUTPUT.PUT_LINE ('Department = ' || dept.department_name || ', staff = ' || dept.staff);
END LOOP;
END;

--Result:
--Department = IT, staff = 5
--Department = Finance, staff = 6
--Department = Purchasing, staff = 6
--Department = Sales, staff = 34
--Department = Shipping, staff = 45
相关子查询
DECLARE
CURSOR c1 IS
SELECT department_id, last_name, salary
FROM employees t
WHERE salary > ( SELECT AVG(salary)
FROM employees
WHERE t.department_id = department_id
)
ORDER BY department_id, last_name;
BEGIN
FOR person IN c1
LOOP
DBMS_OUTPUT.PUT_LINE('Making above-average salary = ' || person.last_name);
END LOOP;
END;

--Result:
--Making above-average salary = Hartstein

GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 110 -

--Making above-average salary = Raphaely
--Making above-average salary = Bell
--...
--Making above-average salary = Higgins

功能说明
记录当前coordinator 节点的资源池实时使用情况,包括等待任务数量,运行任务
数量等。
表结构说明
表5- 231 表结构信息说明:




RESOURCE_POOL_ID
资源池ID
RESOURCE_POOL_NAME
资源池名称
PRIORITY
资源池优先级,取值范围[1,8]
WAITING_TASKS
该资源池在集群范围内当前等待任务数,取值范围
同字段类型取值范围
RUNNING_TASKS
该资源池在集群范围内当前运行任务数,取值范围
同字段类型取值范围
VC_ID
虚拟集群ID
VC_NAME
虚拟集群名称

);

查看训练结果。
gbase> SELECT * FROM patients_logregr\G
*************************** 1. row ***************************
coef: -5.828, -0.888858, 0.108851
log_likelihood: -9.70259
std_err: 2.70859, 1.08267, 0.0461127
z_stats: -2.15168, -0.820985, 2.36054
num_rows_processed: 20
num_missing_rows_skipped: 0
num_iterations: 17
1 row in set (Elapsed: 00:00:00.00)
gbase> select * from test.patients_logregr_summary\G
*************************** 1. row ***************************

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1426
method: logregr
source_table: test.patients
out_table: test.patients_logregr
dependent_varname: second_attack
independent_varname: array double[1, treatment, trait_anxiety]
optimizer_params: optimizer=cg, max_iter=20, tolerance=0.0001
num_all_groups: 1
num_failed_groups: 0
num_rows_processed: 20
num_missing_rows_skipped: 0
grouping_col: NULL
1 row in set (Elapsed: 00:00:00.00)

用模型进行预测。
gbase>
SELECT p.id,
mllib.logregr_predict(
coef,
array double[1, treatment, trait_anxiety]
) as predict,
p.second_attack
FROM patients p, patients_logregr m
ORDER BY p.id;
+----+---------+---------------+
| id | predict | second_attack |
+----+---------+---------------+
|
1 | 1
|
1 |
|
2 | 1
|
1 |
|
3 | 0
|
1 |
|
4 | 1
|
1 |
|
5 | 0
|
1 |
|
6 | 1
|
1 |
|
7 | 1
|
1 |
|
8 | 1
|
1 |
|
9 | 1
|
1 |
| 10 | 1
|
1 |
| 11 | 1
|
0 |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1427
| 12 | 0
|
0 |
| 13 | 0
|
0 |
| 14 | 0
|
0 |
| 15 | 0
|
0 |
| 16 | 0
|
0 |
| 17 | 1
|
0 |
| 18 | 0
|
0 |
| 19 | 0
|
0 |
| 20 | 1
|
0 |
+----+---------+---------------+
20 rows in set (Elapsed: 00:00:00.00)
预测语句输出的id 列代表不同的患者,
predict 列的值代表对患者是否会复发
的预测值(0 代表不复发,1 代表复发),second_attach 列的值是患者是否复发
的真实值,比较两个值可以知道使用Logistic 回归模型进行分析是比较恰当
的。