使用 WITH 语句的物化视图

materialized view using WITH statement

我创建了一个物化视图,但我有一个错误,我不明白如何解决它

RA-00937: not a single-group group function
00937. 00000 -  "not a single-group group function

在线

SELECT x.*,SUM(x.quantities) as Tquantities 你能帮我解决一下吗

CREATE MATERIALIZED VIEW TestView  AS 
  With x AS(
    SELECT Numclient     as CLIENT,
           Numcommand    as COMMAND,
           count(gender) as quantities
      FROM customer, 
           Command  
     WHERE Numclient =  Numcommand
       AND gender =2
     GROUP BY Numclient,  
              Numcommand
    ),
   x1 AS (
      SELECT x.*,SUM(x.quantities) as Tquantities
       FROM x 
    )
    SELECT x.*,ROUND(x.quantities*100/x1.Tquantities) as Percent 
      FROM x1, x;

从什么时候开始这在 Oracle 中有效?这不是 MySQL。

SELECT x.*,SUM(x.quantities) as Tquantities FROM x

为了使其正常工作,您必须对 x 中的列进行 GROUP BY。

为了消除错误,请删除原始子查询 x1 中的 x.*,。 您的 select 语句可以简化,如下所示:

select Numclient CLIENT, Numcommand COMMAND, count(gender) quantities,
       round(100*count(gender)/sum(count(gender)) over()) percent
  from customer 
  join Command on Numclient = Numcommand and gender = 2
  group by Numclient, Numcommand 

SQLFiddle

有点不清楚为什么要显示列 COMMAND,当它等于 CLIENT 时? 我怀疑这可能是 where 条件中的错误,或者此列是多余的。