Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取sql中列的和_Sql_Oracle - Fatal编程技术网

获取sql中列的和

获取sql中列的和,sql,oracle,Sql,Oracle,我的问题是 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 我需要获取列页面视图的总数。我怎样才能得到它?请帮忙。PHP和ORACLE 我

我的问题是

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
我需要获取列
页面视图的总数
。我怎样才能得到它?请帮忙。PHP和ORACLE

我需要总的
页面浏览量
为2(1+1)。我需要在不更改现有查询的情况下将其作为新行获取

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`
我尝试了这个,但是给出了一个结果
4
,而不是
2


你到底想展示什么?每个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
但是,对于当前查询,甚至不需要联接(除非您在
报告API\u使用情况
中有行,但在
报告API\u页面中没有父行

编辑:因此,根据您问题的更新,如果您只想要总的页面浏览量,您可以使用

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
(连接不是必需的,它允许您仅统计
报表API\u页面
表中定义了
TERMID
的页面的页面视图)

EDIT2:基于您的第二次更新,我建议您在子查询中使用()上的
SUM(页面视图)

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)
显然,您也可以用原始查询替换子查询

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
试着把它改成这样

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;

请添加一些数据。另外:您正在使用哪些数据库管理系统?博士后?Oracle?在您的示例中是NO
SUM
有一个计数这是打字错误吗?您在查询中使用的是
计数
,我得到的是单个计数。我需要得到所有单个计数的总和。通过他的加入,如果
aip
rau
不包含相同的
TERMID
他可能会得到更多的行,但每个TERMID的页面浏览量总是相同的(这是我在括号中指定的)
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;