比例均摊

创建TEST01表并插入数据,然后通过SQL查询计算每个字段的占比情况。当某个值为空时,根据COUNT_DEPT判断并赋予相应比例,如100%、0%或剩余比例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CREATE TABLE TEST01(VALUES1 VARCHAR2(10),VALUES2 VARCHAR2(10),VALUES3 VARCHAR2(10))
INSERT INTO TEST01 VALUES('1','2','3');
INSERT INTO TEST01 VALUES('1','2',' ');
INSERT INTO TEST01 VALUES('1',' ',' ');
INSERT INTO TEST01 VALUES(' ',' ','3');
INSERT INTO TEST01 VALUES(' ',' ',' ');




SELECT  T1.VALUES1
       ,CASE WHEN T1.COUNT_DEPT=0 THEN '100%'
            WHEN NVL(T1.VALUES1,' ')=' ' THEN '0'
            ELSE TRUNC(1/T1.COUNT_DEPT,2)*100||'%' END RATIO1
       ,T1.VALUES2
       ,CASE WHEN T1.COUNT_DEPT=0 THEN '0'
            WHEN NVL(T1.VALUES2,' ')=' ' THEN '0'
            ELSE TRUNC(1/T1.COUNT_DEPT,2)*100||'%' END RATIO2
       ,T1.VALUES3
       ,CASE WHEN T1.COUNT_DEPT=0 THEN '0'
            WHEN NVL(T1.VALUES3,' ')=' ' THEN '0'
            ELSE TRUNC(1-TRUNC(((T1.COUNT_DEPT-1)/T1.COUNT_DEPT),2),2)*100||'%' END RATIO3
 FROM 
      (
      SELECT VALUES1,VALUES2,VALUES3,
             CASE WHEN NVL(VALUES1,' ')=' ' THEN 0 ELSE 1 END+
             CASE WHEN NVL(VALUES2,' ')=' ' THEN 0 ELSE 1 END+
             CASE WHEN NVL(VALUES3,' ')=' ' THEN 0 ELSE 1 END AS COUNT_DEPT
       FROM TEST01
      )T1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值