我有这样一张数据表:
字段名:样品种类,取样地点,取样时间,取样名称,检测值(类型是:varchar2(20))
(检测值 的填充数据有三种:阴,阳,数字)
现在我想先按前面四个字段分组:(样品种类,取样地点,取样时间,取样名称)
然后统计检测值的阴百分比,阳百分比,最大值,最小值,平均值
(如果这个组的数据填充的是阴和阳就统计阴百分比,阳百分比;如果填充的数据是数字就统计最大值,最小值,平均值)可能我说的还是不大明白,如果大家有什么问题就问;
这个问题我想可能要涉及到类型转换;
分好组以后再判断这个组的检测值的填充数据室什么;
如果是阴或阳就统计阴阳比例;
如果是数字就转换为数字流线型统计最大值,最小值,平均值;
注意分好组以后同一个组的填充的数据都一样的(阴或阳)或者是数字;

解决方案 »

  1.   

    SELECT 样品种类,
           取样地点,
           取样时间,
           取样名称,
           SUM(DECODE(检测值,'阳',1,0))/COUNT(*) AS 阳占比,
     SUM(DECODE(检测值,'阴',1,0))/COUNT(*) AS 阴占比,
     NULL 
      FROM TEST
    WHERE 检测值 = '阳' OR 检测值 = '阴'
     GROUP BY 样品种类,
              取样地点,
              取样时间,
              取样名称UNIONSELECT 样品种类,
           取样地点,
           取样时间,
           取样名称,
           MAX(TO_NUMBER(检测值)) AS 最大值,
           MIN(TO_NUMBER(检测值)) AS 最小值,
           AVG(TO_NUMBER(检测值)) AS 平均值 
      FROM TEST
    WHERE 检测值 <> '阳' AND 检测值<> '阴'
     GROUP BY 样品种类,
              取样地点,
              取样时间,
              取样名称