2014-01-17 181 views
0

我有這個查詢,我從三個不同的表中計算值,並從每個表中獲取兩列,日期和計數。前12名獲得3條記錄第二名,12名獲得第三名。最後,我從這些表中的計數列做了小計算,從第二列的日期找到匹配..基於日期的計算計算

例如,如果第一個表列的日期與第二個和第三個匹配,我將所有這些價值和它越來越百分比...雖然我已經創造了它的查詢......但它得到了正確的給數據做

我需要知道我怎麼會日期的基礎上進行計算表格這張表..我使用Oracle數據庫

SELECT TRUNC(ans.date), 
    (a.count1+b.count2+c.count3)*100/count4 AS status 
FROM 
    (SELECT COUNT(pans.actual)count1, 
      TRUNC(ans.date) AS subdate 
    FROM pans, ans 
    WHERE pans.actres ='1' 
    AND TRUNC(anss.date) > sysdate-100 
    AND pans.id = anss.id 
    GROUP BY TRUNC(anss.date) 
)a, 
    (SELECT COUNT(conans.actres)count2, 
     TRUNC(anss.date) AS subdate 
    FROM conans, anss 
    WHERE conans.actres ='1' 
    AND TRUNC(anss.date) > sysdate-100 
    AND conans.id = anss.id 
    GROUP BY TRUNC(anss.date) 
)b, 
    (SELECT COUNT(anss.submitted)count3, 
      TRUNC(anss.date) AS subdate 
    FROM anss 
    WHERE submitted = 1 
    AND TRUNC(anss.date) > sysdate-100 
    GROUP BY TRUNC(anss.date) 
)c, 
    (SELECT COUNT(pans.actres) count4 
    FROM pans, anss 
    WHERE anss.date > sysdate-100 
)d, 
    anss, 
    pans 
WHERE a.subdate = b.subdate 
    AND b.subdate = c.subdate 
    AND a.subdate = c.subdate 
    AND TRUNC(anss.date) > sysdate-100 
GROUP BY TRUNC(anss.date),a.count1,b.count2,c.count3,d.count4 


count1 
------------------ 
count | date 
3  | 12/12/1928 
5  | 12/12/1998 
6  | 12/12/1995 


count2 
------------------ 
count| date 
3 | 12/12/1928 
5 | 12/12/1998 
6 | 12/12/1995 
23 | 12/12/1924 
56 | 12/12/1993 
68 | 12/12/1992 
39 | 12/12/1921 
58 | 12/12/1990 
63 | 12/12/1999 


count3 
------------------ 
count| date 
3 | 12/12/1928 
5 | 12/12/1998 
6 | 12/12/1995 
23 | 12/12/1924 
56 | 12/12/1993 
68 | 12/12/1992 
39 | 12/12/1921 
58 | 12/12/1990 
63 | 12/12/1999 


count4 
------------------ 
4500 

現在我已經計算

(count1+count2+count3)*100/count4 
when count1.date=count2date=count3.date 

HTH

回答

0

你拿的過去100天內的所有人工神經網絡記錄和交叉連接盤。這個十字架是否合乎要求? (這將是更好的,你使用了ANSI連接語法,以避免意外的交叉連接。)

你發現存在於所有的A,B和C,並相應地加入所有日期。

您CROSS JOIN的A-B-C與人工神經網絡,鍋CROSS JOIN加盟。再說一遍:你真的想在這裏交叉嗎?你由anns.date分組(日期是一個壞名字,順便說一句,因爲它是一個關鍵字),但是anns.date habe如何處理檢索到的記錄?

從句法上看,你的陳述看起來不錯,但我不信任你的加入:-)