0

私が間違っていることを理解していません。基準Aまたは基準Bを満たすすべてのIDの毎週のCOUNTを取得しようとしています.

  select CREATE_WEEK, count ( A.PK )
 from TABLE1 A
where    ( A.PK not in (select distinct ( B.FK )
                                    from TABLE2 B
                                  where B.CREATE_TIMESTAMP > '01-Jan-2013')
              or A.PK in (select A.PK
                                 from ( select A.PK, A.CREATE_TIMESTAMP as A_CRT, min ( B.CREATE_TIMESTAMP ) as FIRST_B
                                              from TABLE1 A, TABLE2 B
                                             where    A.PK = B.FK
                                                     and A.CREATE_TIMESTAMP > '01-Jan-2013'
                                                     and B.CREATE_TIMESTAMP > '01-Jan-2013'
                                         group by A.PK, A.CREATE_TIMESTAMP)
                                where A_CRT < FIRST_B) )
        and A.CREATE_TIMESTAMP > '01-Jan-2013'
        and CREATE_WEEK >= 2
        and THIS_WEEK - CREATE_WEEK >= 1
group by CREATE_WEEK 
order by CREATE_WEEK asc

**注: table1 の PK = table2 の FK なので、最初のサブクエリで、table1 の PK が table2 の FK として存在するかどうかを確認しています。週は TO_CHAR (TO_DATE (TRUNC (A.CREATE_TIMESTAMP, 'IW')), 'IW') から取得されます

OR を取り出していずれかのサブクエリでクエリを実行すると、1 ~ 2 秒で結果が返されます。しかし、結合されたクエリを実行しようとすると、20 分後に結果が返されません。

それらを個別に実行してスプレッドシートに合計できることはわかっていますが、1 つの数値だけを取得したいのです。

4

1 に答える 1

0

基準 A または基準 B を満たすすべての ID の毎週の COUNT を取得しようとしています

ただし、コードは次のとおりです。

ID NOT IN (subquery A) OR ID IN (subquery B)

NOT はあなたの要件と矛盾しています。

ID が両方の基準を満たすと仮定すると、以下を使用します。

ID in (
  select ... -- this is subquery A
  union
  select ... -- this is subquery B)
于 2013-09-25T08:56:53.363 に答える