【发布时间】:2014-01-17 07:28:06
【问题描述】:
我有这个查询,我正在计算三个不同表中的值并从每个表中获取两列、日期和计数。获得 3 条记录,前 12 条,第 12 条,第 12 条,第 3 条。最后,我从所有这些表中的这些计数列中进行很少的计算,其中第二列的日期正在寻找匹配项。
例如,如果第一个表列的日期与第二个和第三个匹配,我将添加所有这些值并获取它的百分比......虽然我已经为它创建了一个查询......但它得到了正确的数据......
我需要知道如何根据日期从这张表中执行计算。我正在使用 oracle DB
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
【问题讨论】: