教主 帮朋友问个问题 有个类似于撮合的系统
随机取10个用户 要求他们的一个指标数之和等于100
这种需求能用sql搞定么?
由于对算法研究不多,对于这种问题只想到枚举所有10个的组合,然后计算和
这儿就需要对生成的算术表达式进行解析,可以用 dbms_aw.eval_number
我们用emp.sal来模拟,取三个sal相加等于5825 的记录
随机取10个用户 要求他们的一个指标数之和等于100
这种需求能用sql搞定么?
由于对算法研究不多,对于这种问题只想到枚举所有10个的组合,然后计算和
这儿就需要对生成的算术表达式进行解析,可以用 dbms_aw.eval_number
我们用emp.sal来模拟,取三个sal相加等于5825 的记录
SELECT *
FROM (SELECT ltrim(sys_connect_by_path(empno, ','), ',') AS empno_p,
ltrim(sys_connect_by_path(ename, '+'), ',') AS ename_p,
ltrim(sys_connect_by_path(sal, '+'), '+') AS sal_p
FROM emp
WHERE connect_by_isleaf = 1
CONNECT BY nocycle PRIOR ROWID < ROWID
AND LEVEL <= 3)
WHERE dbms_aw.eval_number(sal_p) = 5825;
EMPNO_P ENAME_P SAL_P
-------------------- -------------------- --------------------
7499,7521,7566 +ALLEN+WARD+JONES 1600+1250+2975
7499,7566,7654 +ALLEN+JONES+MARTIN 1600+2975+1250
2 rows selected