Oracle DB sql group表将模式命名为一个组

Oracle DB sql group表将模式命名为一个组,sql,oracle,oracle11g,common-table-expression,Sql,Oracle,Oracle11g,Common Table Expression,我正在尝试将表的某些模式分类到各个组中,并显示结果。这很好,我包含了一个case语句并对其进行了分类,但如何对计数进行分组,让我们提供sql逻辑、现有结果和预期结果,以便理解 数据库是Oracle11g SQL查询 select DISTINCT OBJECT_NAME ,count(*) as COUNTS, CASE WHEN OBJECT_NAME LIKE '%AB_ABC%' THEN 'ABC' WHEN OBJECT_NAME LIKE 'AB_BBC%'

我正在尝试将表的某些模式分类到各个组中,并显示结果。这很好,我包含了一个case语句并对其进行了分类,但如何对计数进行分组,让我们提供sql逻辑、现有结果和预期结果,以便理解

数据库是Oracle11g

SQL查询

select DISTINCT OBJECT_NAME ,count(*) as COUNTS,
CASE 
    WHEN OBJECT_NAME LIKE '%AB_ABC%'
    THEN 'ABC'
    WHEN OBJECT_NAME LIKE 'AB_BBC%'
    THEN 'BBC'
    WHEN OBJECT_NAME LIKE 'AB_CNBC%'
    THEN 'CNBC'
    WHEN OBJECT_NAME LIKE 'AB_PTV%'
    THEN 'PTV'
    WHEN OBJECT_NAME LIKE 'AB_CNN%'
    THEN 'CNN'
    WHEN OBJECT_NAME LIKE '%TMP%'
    THEN 'TEMP'
    WHEN OBJECT_NAME LIKE '%TEMP%'
    THEN 'TEMP'
    ELSE        
      'OTHER'
      END
       AS TABLE_GROUP
       from dba_objects
where owner='SCHEMA_NAME'
and object_type='TABLE'
/*and OBJECT_NAME not like '%AB_ABC%'
and OBJECT_NAME not like '%AB_BBC%'
and OBJECT_NAME not like '%AB_CNBC%'
and OBJECT_NAME not like '%AB_PTV%'
and OBJECT_NAME not like '%AB_CNN%'
and OBJECT_NAME not like '%TEMP%'
and OBJECT_NAME not like '%SKY_TV%'*/
group by OBJECT_NAME
order by object_name;
现有结果

OBJECT_NAME TABLE_GROUP COUNTS
AB_ABC      ABC          1
AB_BBC      BBC          1
AB_CNBC     CNBC         1
AB_PTV      PTV          1
AB_CNN      CNN          1
OBJECT_NAME TABLE_GROUP COUNTS
AB_ABC      ABC          120
AB_BBC      BBC          130
AB_CNBC     CNBC         20
AB_PTV      PTV          80
AB_CNN      CNN          600
预期结果

OBJECT_NAME TABLE_GROUP COUNTS
AB_ABC      ABC          1
AB_BBC      BBC          1
AB_CNBC     CNBC         1
AB_PTV      PTV          1
AB_CNN      CNN          1
OBJECT_NAME TABLE_GROUP COUNTS
AB_ABC      ABC          120
AB_BBC      BBC          130
AB_CNBC     CNBC         20
AB_PTV      PTV          80
AB_CNN      CNN          600
如何达到预期的效果?使用任何与CTE


请建议一种可能的最佳方式?

通过
案例
表达式进行聚合:

select count(*) as COUNTS,
    CASE 
        WHEN OBJECT_NAME LIKE '%AB_ABC%'
        THEN 'ABC'
        WHEN OBJECT_NAME LIKE 'AB_BBC%'
        THEN 'BBC'
        WHEN OBJECT_NAME LIKE 'AB_CNBC%'
        THEN 'CNBC'
        WHEN OBJECT_NAME LIKE 'AB_PTV%'
        THEN 'PTV'
        WHEN OBJECT_NAME LIKE 'AB_CNN%'
        THEN 'CNN'
        WHEN OBJECT_NAME LIKE '%TMP%'
        THEN 'TEMP'
        WHEN OBJECT_NAME LIKE '%TEMP%'
        THEN 'TEMP'
        ELSE  'OTHER'
    END AS TABLE_GROUP
       from dba_objects
where owner='SCHEMA_NAME' and object_type='TABLE'
/*and OBJECT_NAME not like '%AB_ABC%'
and OBJECT_NAME not like '%AB_BBC%'
and OBJECT_NAME not like '%AB_CNBC%'
and OBJECT_NAME not like '%AB_PTV%'
and OBJECT_NAME not like '%AB_CNN%'
and OBJECT_NAME not like '%TEMP%'
and OBJECT_NAME not like '%SKY_TV%'*/
group by     CASE 
        WHEN OBJECT_NAME LIKE '%AB_ABC%'
        THEN 'ABC'
        WHEN OBJECT_NAME LIKE 'AB_BBC%'
        THEN 'BBC'
        WHEN OBJECT_NAME LIKE 'AB_CNBC%'
        THEN 'CNBC'
        WHEN OBJECT_NAME LIKE 'AB_PTV%'
        THEN 'PTV'
        WHEN OBJECT_NAME LIKE 'AB_CNN%'
        THEN 'CNN'
        WHEN OBJECT_NAME LIKE '%TMP%'
        THEN 'TEMP'
        WHEN OBJECT_NAME LIKE '%TEMP%'
        THEN 'TEMP'
        ELSE  'OTHER'
    END

非常感谢它奏效了