再次,我为提前缺乏知识而道歉。如果我需要添加任何内容来帮助您回答我的问题,请直接询问。这就是......
我有这组数据:
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
答案 0 :(得分:0)
在主观基础上对行进行分组会很困难,我不建议你沿着那条路走下去。相反,您应该创建一个名为“PERMIT GROUP”的第三列,以便您可以将每个许可组合在一起。一旦完成,对所需内容的查询就变得简单了。
答案 1 :(得分:0)
我认为这可以通过分析函数来完成。您需要按许可和计分来划分数据。包含分区的总计。这是基于Oracle scott.emp表的一般示例,您只能在该deptno中看到count(*)。 Dept = 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
答案 2 :(得分:0)
SELECT permitgroup, SUM(nrOfpermits)
FROM (SELECT substr(permit,1,instr(permit,' ')-1) permitgroup, nrOfpermits
FROM permits)
GROUP BY permitgroup
假设“like terms”意味着以相同的单词开头,但您可以通过修改内部SELECT语句轻松更改相似性标准。
答案 3 :(得分: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
计数。您可以使用所需的所有值列表(我将其称为“驱动程序”),然后继续加入其余数据。