Reputation: 1157
My query is
SELECT
AIP.TERMID,
(SELECT COUNT(RAU.TERMNAME)
FROM REPORT_API_USAGE RAU
WHERE RAU.TERMID = AIP.TERMID AND RAU.VOCID = 4) AS page_views
FROM REPORT_API_PAGES AIP
GROUP BY AIP.TERMID
I need to get the total of column page_views
. How can I get it? Please help. PHP and ORACLE.
I need total of page_views
as 2 (1+1). I need to get it as new row without changing the existing query.
SELECT
AIP.TERMID,
(SELECT COUNT(RAU.TERMNAME)
FROM REPORT_API_USAGE RAU
WHERE RAU.TERMID = AIP.TERMID AND RAU.VOCID = 4) AS page_views,
(SELECT SUM(COUNT(RAU.TERMNAME))
FROM REPORT_API_USAGE RAU
WHERE RAU.VOCID = 4 GROUP BY AIP.TERMID) AS page_views
FROM REPORT_API_PAGES AIP
GROUP BY AIP.TERMID`
I tried this but giving a result 4
instead of 2
Upvotes: 0
Views: 108
Reputation: 726
What exactly do you want to show ? The total of page views per TERMID ?
SELECT aip.TERMID,
COUNT(rau.TERMNAME) AS PAGE_VIEWS
FROM REPORT_API_PAGES aip
JOIN REPORT_API_USAGE rau ON rau.TERMID = aip.TERMID
WHERE rau.VOCID = 4
GROUP BY aip.TERMID
Although, with your current query, the join is not even needed (unless you have rows in REPORT_API_USAGE
with no parent in REPORT_API_PAGES
)
SELECT rau.TERMID,
COUNT(rau.TERMNAME) AS PAGE_VIEWS
FROM REPORT_API_USAGE rau
WHERE rau.VOCID = 4
GROUP BY rau.TERMID
EDIT: So, based on the update of your question, if you only want the total of pageviews, you can use
SELECT COUNT(rau.TERMNAME) AS page_views
FROM REPORT_API_PAGES aip
JOIN REPORT_API_USAGE rau ON rau.TERMID = aip.TERMID
WHERE rau.VOCID = 4
(The join is not necessary, it allows you to only count the page views for pages where the TERMID
is defined in the REPORT_API_PAGES
table)
EDIT2: Based on your second update, I suggest you to use SUM(PAGE_VIEWS) OVER ()
on your subquery
SELECT TERMID,
PAGE_VIEWS,
SUM(PAGE_VIEWS) OVER () AS TOTAL_PAGE_VIEWS
FROM (
SELECT aip.TERMID,
COUNT(rau.TERMNAME) AS PAGE_VIEWS
FROM REPORT_API_PAGES aip
LEFT OUTER JOIN REPORT_API_USAGE rau ON (rau.TERMID = aip.TERMID AND rau.VOCID = 4)
GROUP BY aip.TERMID)
Obviously you can replace the subquery with your original query as well.
Upvotes: 1
Reputation: 4805
SELECT AIP.TERMID,
(
select count(RAU.TERMNAME)
FROM
REPORT_API_USAGE RAU
WHERE
RAU.TERMID = AIP.TERMID AND RAU.VOCID = 4
) as page_views
from
REPORT_API_PAGES AIP
GROUP BY
AIP.TERMID
just try modifying this to like this
select sum(page_views)
(
SELECT AIP.TERMID,
(
select count(RAU.TERMNAME)
FROM
REPORT_API_USAGE RAU
WHERE
RAU.TERMID = AIP.TERMID AND RAU.VOCID = 4
) as page_views
from
REPORT_API_PAGES AIP
GROUP BY
AIP.TERMID
) from dual;
Upvotes: 1