|
WITH T AS (SELECT CHR(64+LEVEL) C FROM DUAL CONNECT BY LEVEL <= 2)
,T1 AS (SELECT REPLACE(SYS_CONNECT_BY_PATH(C,','),',') S
FROM T
WHERE LEVEL = 3
CONNECT BY LEVEL <= 3 )
,T2 AS (SELECT REPLACE(SYS_CONNECT_BY_PATH(S,','),',') STR -- 8*3=24之内的所有文本
FROM T1
WHERE LEVEL = 8
CONNECT BY NOCYCLE LEVEL <= 8
AND T1.S <> PRIOR T1.S -- 包含了所有8个代码
)
,T3 AS (
SELECT T2.STR , SUBSTR(T2.STR,1,INSTR(T2.STR,'ABA')-1) SUB_STR
FROM T2
WHERE REGEXP_COUNT(T2.STR,'A') = REGEXP_COUNT(T2.STR,'B') -- A和B的个数一样多
)
,T4 AS (
SELECT STR , SUB_STR
FROM (
SELECT T3.STR
,SUBSTR(T3.STR,LEVEL,3) SUB_STR
FROM T3
CONNECT BY LEVEL <= LENGTH(T3.SUB_STR)
AND T3.STR = PRIOR T3.STR
AND PRIOR DBMS_RANDOM.value() IS NOT NULL
)
GROUP BY STR , SUB_STR -- 去掉重复 SUB_STR
)
SELECT SUB_STR
,COUNT(*) CNT
FROM T4
GROUP BY SUB_STR
ORDER BY 2 DESC ;
SUB_STR CNT
------------ ----------
AAB 27000
BBA 25752
BAA 20350
BAB 20160
ABB 19968
BBB 17856
AAA 17508
ABA 5040 |
|