当前位置:   article > 正文

oracle分种类计数,要求写一个汇总列表,是统计每个分类下的个数,以及每个分类下有效的个数...

oracle怎么中种类数怎么写

例子数据是这样的

ID                  STATUS                  TYPE

1                       0                         'A'

2                       1                         'A'

3                       0                         'A'

4                       1                         'B'

5                       1                         'B'

6                       0                         'B'

要求是统计每个分类下面的记录条数,以及每个分类下面有效(status=1)的记录条数

汇总列表字段要求

TYPE, 分类总记录数,分类记录有效数

---------------------------------------------------------------

下面是我的实现方法,想问一下有没有其他省力的方法

方法一:

WITH TMP AS(SELECT 1 ID,0 STATUS,'A' TYPE FROM DUAL UNION ALL

SELECT 2,1,'A' FROM DUAL UNION ALL

SELECT 3,0,'A' FROM DUAL UNION ALL

SELECT 4,1,'B' FROM DUAL UNION ALL

SELECT 5,1,'B' FROM DUAL UNION ALL

SELECT 6,0,'B' FROM DUAL)

SELECT TYPE,SUM(1) 记录总数,SUM(CASE WHEN STATUS=0 THEN 0 ELSE 1 END)记录有效数

FROM TMP GROUP BY TYPE;

方法二:

WITH TMP AS(SELECT 1 ID,0 STATUS,'A' TYPE FROM DUAL UNION ALL

SELECT 2,1,'A' FROM DUAL UNION ALL

SELECT 3,0,'A' FROM DUAL UNION ALL

SELECT 4,1,'B' FROM DUAL UNION ALL

SELECT 5,1,'B' FROM DUAL UNION ALL

SELECT 6,0,'B' FROM DUAL),

TMP2 AS(SELECT NVL(STATUS,3) S,TYPE,COUNT(ID) CNT FROM TMP GROUP BY CUBE(P,T)),

TMP3 AS(SELECT * FROM TMP2 PIVOT(MAX(CNT) FOR S IN(3 AS ZS,0 AS WX,1 AS YX)))

SELECT TYPE,ZS,YX FROM TMP3 WHERE P IS NOT NULL;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/345243
推荐阅读
相关标签
  

闽ICP备14008679号