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

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 に答える
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

主観的に行をグループ化するのは難しいので、その方法をお勧めしません。代わりに、「PERMIT GROUP」という 3 番目の列を作成して、各許可をグループ化できるようにする必要があります。これが完了すると、必要なクエリが簡単になります。

于 2013-02-07T14:21:58.867 に答える
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 に答える