|
少一层,快一倍
with a as(select level-1 a,level-2 b from dual connect by level<=3),
e as(select a.a||b.a||c.a||d.a p,a.a b1,b.a b2,c.a b3,d.a b4,a.b s1,b.b s2,c.b s3,d.b s4
from a,a b,a c,a d
where regexp_count(a.a||b.a||c.a||d.a,'2')>regexp_count(a.a||b.a||c.a||d.a,'0')),
g as(select * from(select e.p||f.p p,e.b1||f.b1 b1,e.b2||f.b2 b2,e.b3||f.b3 b3,e.b4||f.b4 b4 ,
e.s1+f.s1 s1,
e.s2+f.s2 s2,
e.s3+f.s3 s3,
e.s4+f.s4 s4
from e,e f)
where instr(b1||b2||b3||b4,'00') not in(1,3,5,7)) ,
j as (select * from
(select e.p||f.p p,e.b1||f.b1 b1,e.b2||f.b2 b2,e.b3||f.b3 b3,e.b4||f.b4 b4 ,
e.s1+f.s1 s1,
e.s2+f.s2 s2,
e.s3+f.s3 s3,
e.s4+f.s4 s4
from g e,g f)x
where s1>0 and s2>0 and s3>0 and s4>0)
select count(*) from j;
COUNT(*)
----------
294879
已用时间: 00: 00: 00.28 |
|