|
我的写法怎么会多
with t as(select a from (select to_char(level-1,'fm999') a from dual connect by level<=1000)
where substr(a,1,1)not in(substr(a,2,1) ,substr(a,3,1))
and substr(a,2,1)<>substr(a,3,1)
and substr(a,1,1)-substr(a,2,1) not in(-1,1)
and substr(a,3,1)-substr(a,2,1) not in(-1,1)
)
,t2 as(select a.a||b.a||c.a p
,REPLACE(a.a,GREATEST(substr(a.a,1,1),substr(a.a,2,1),substr(a.a,3,1)))m1
,REPLACE(b.a,GREATEST(substr(b.a,1,1),substr(b.a,2,1),substr(b.a,3,1)))m2
,REPLACE(c.a,GREATEST(substr(c.a,1,1),substr(c.a,2,1),substr(c.a,3,1))) m3
from t a,t b, t c
where a.a not in(b.a,c.a) and b.a<>c.a
and length(translate('$1234567890','$'||b.a||a.a,'$'))=5
and length(translate('$1234567890','$'||b.a||c.a,'$'))=5
and length(translate('$1234567890','$'||c.a||a.a,'$'))=5
and substr(a.a,1,1)-substr(b.a,1,1) not in (-1,1)
and substr(c.a,1,1)-substr(b.a,1,1) not in (-1,1)
and substr(a.a,2,1)-substr(b.a,2,1) not in (-1,1)
and substr(c.a,2,1)-substr(b.a,2,1) not in (-1,1)
and substr(a.a,3,1)-substr(b.a,3,1) not in (-1,1)
and substr(c.a,3,1)-substr(b.a,3,1) not in (-1,1)
)
select count(*) from t2;
COUNT(*)
----------
125432
已用时间: 00: 00: 26.84
WITH
n AS (SELECT ROWNUM-1 n FROM DUAL CONNECT BY ROWNUM<=10)
select count(*) from(
SELECT path ,m1*m2*m3 m FROM (
SELECT n1.n||n2.n||n3.n||n4.n||n5.n||n6.n||n7.n||n8.n||n9.n path
,REPLACE(n1.n||n2.n||n3.n,GREATEST(n1.n,n2.n,n3.n))m1
,REPLACE(n4.n||n5.n||n6.n,GREATEST(n4.n,n5.n,n6.n))m2
,REPLACE(n7.n||n8.n||n9.n,GREATEST(n7.n,n8.n,n9.n)) m3
FROM n n1,n n2,n n3,n n4,n n5,n n6,n n7,n n8,n n9
WHERE n1.n NOT IN (n2.n,n3.n,n4.n,n5.n,n6.n,n7.n,n8.n,n9.n)
AND n2.n NOT IN (n3.n,n4.n,n5.n,n6.n,n7.n,n8.n,n9.n)
AND n3.n NOT IN (n4.n,n5.n,n6.n,n7.n,n8.n,n9.n)
AND n4.n NOT IN (n5.n,n6.n,n7.n,n8.n,n9.n)
AND n5.n NOT IN (n6.n,n7.n,n8.n,n9.n)
AND n6.n NOT IN (n7.n,n8.n,n9.n)
AND n7.n NOT IN (n8.n,n9.n)
AND /*n8.n<>n9.n
AND n1.n NOT IN (n2.n+1,n2.n-1) AND n2.n NOT IN (n3.n+1,n3.n-1)
AND n4.n NOT IN (n5.n+1,n5.n-1) AND n5.n NOT IN (n6.n+1,n6.n-1)
AND n7.n NOT IN (n8.n+1,n8.n-1) AND n8.n NOT IN (n9.n+1,n9.n-1)
AND n1.n NOT IN (n4.n+1,n4.n-1) AND n4.n NOT IN (n7.n+1,n7.n-1)
AND n2.n NOT IN (n5.n+1,n5.n-1) AND n5.n NOT IN (n8.n+1,n8.n-1)
AND n3.n NOT IN (n6.n+1,n6.n-1) AND n6.n NOT IN (n9.n+1,n9.n-1)*/
abs(n5.n-n2.n)>1 and abs(n5.n-n4.n)>1 and abs(n5.n-n6.n)>1 and abs(n5.n-n8.n)>1
and abs(n2.n-n1.n)>1 and abs(n2.n-n3.n)>1
and abs(n4.n-n1.n)>1 and abs(n4.n-n7.n)>1
and abs(n8.n-n7.n)>1 and abs(n8.n-n9.n)>1
and abs(n6.n-n3.n)>1 and abs(n6.n-n9.n)>1
)
where substr(m1,1,1)>substr(m1,2,1) and
substr(m2,1,1)>substr(m2,2,1) and
substr(m3,1,1)>substr(m3,2,1)
)
;
NT(*)
-----
18796
时间: 00: 00: 02.70 |
|