0

再次,我为我事先缺乏知识而道歉。如果我需要添加任何内容来帮助您回答我的问题,请尽管提问。开始....

我有这组数据:

PERMIT                              # OF PERMITS
Individual NPDES w/ construction    0   
Individual NPDES w/o construction   0   
Renewals (COWS)                     2   
Approvals w/ Construction           21  
Renewals (CHICKENS)                 25  
Approvals w/ Construction           1   
Approvals w/o construction          1   
Renewals (CHICKENS)                 1

我需要做的是结合 PERMIT 列中的类似术语,并从许可数中添加相关计数。这可以做到吗?先感谢您。

系统:Oracle 10g

4

4 回答 4

0

这将很难在主观基础上对行进行分组,我不建议你走这条路。相反,您应该创建一个名为“PERMIT GROUP”的第三列,以便您可以将每个许可组合在一起。完成后,查询您想要的内容变得简单。

于 2013-02-07T14:21:58.867 回答
0

我认为这可以通过分析函数来完成。您需要按许可和计算对数据进行分区。总计与分区。这是基于 Oracle scott.emp 表的一般示例,您仅在该 deptno 中看到 count(*)。部门 = 10 有 3 名员工,20 有 5 名等...:

SELECT * FROM 
 (SELECT deptno, ename, job, sal,
     COUNT(*) OVER (PARTITION BY deptno) cnt
   FROM scott.emp)
  -- WHERE deptno = 10 -- optional 
 /

DEPTNO  ENAME   JOB         SAL     CNT
-------------------------------------------------------
10      CLARK   MANAGER     2450    3
10      KING    PRESIDENT   5000    3
....
20      JONES   MANAGER     2975    5
20      FORD    ANALYST     3000    5
....
30      WARD    SALESMAN    1250    6
30      TURNER  SALESMAN    1500    6
于 2013-02-07T14:28:39.313 回答
0
SELECT permitgroup, SUM(nrOfpermits)
FROM (SELECT substr(permit,1,instr(permit,' ')-1) permitgroup, nrOfpermits
      FROM permits)
GROUP BY permitgroup

假设“相似术语”意味着以相同的单词开头,但您可以通过修改内部 SELECT 语句轻松更改相似性标准。

测试代码

于 2013-02-07T14:34:38.393 回答
0

让我假设您有一个permits包含所有许可值列表的表。

select p.permit, count(a.ACTIVITY_TASK_LIST) as NumPermits
from Permits p left outer join
     DSKMTB_ACTIVITY_TYPE.ACTIVITY_TASK_LIST a
     on p.permit = a.permit   -- assuming join is on the actual name
group by p.permit
order by 1

我认为挑战在于0计数。您可以使用您想要的所有值的列表(我称之为“驱动程序”)来执行此操作,然后加入其余数据。

于 2013-02-07T15:48:59.257 回答