Sql oracle 11g XE中的AS子句

Sql oracle 11g XE中的AS子句,sql,oracle,Sql,Oracle,表:主键已突出显示 客户id、f_名称、l_名称、电话号码、地址、nic、城市 产品id、名称、说明、价格、销售税 分行id、姓名、电话号码、地址、城市 订单编号、客户编号、订单日期、分支机构编号 订单号、产品号、数量 这是我的查询的一个非常简化的版本: SELECT customer_id, SUM(quantity) AS avg_quantity FROM orders,order_product WHERE orders.order_id = order_product.order_id

表:主键已突出显示

客户id、f_名称、l_名称、电话号码、地址、nic、城市 产品id、名称、说明、价格、销售税 分行id、姓名、电话号码、地址、城市 订单编号、客户编号、订单日期、分支机构编号 订单号、产品号、数量 这是我的查询的一个非常简化的版本:

SELECT customer_id, SUM(quantity) AS avg_quantity
FROM orders,order_product
WHERE orders.order_id = order_product.order_id
GROUP BY customer_id
HAVING SUM(quantity) > (SELECT AVG(no_quantity)
FROM(
  SELECT customer_id, SUM(quantity) AS no_quantity
  FROM orders,order_product
  WHERE orders.order_id = order_product.order_id
  GROUP BY customer_id))
我有两个子查询,我想在执行查询时暂时存储结果集。 我见过这样做的SQL示例:

(SELECT * FROM orders WHERE branch_id = 4) AS tempone
我想存储结果集,以便在子查询的上层使用它。上面的查询不在oracle sql developer中运行

ERROR : ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"

我不想使用临时表。我已经试过使用AS子句,查询执行时间太长,超过20分钟。我不知道为什么

您应该能够通过以下方式简化此过程:

select customer_id, avg_quantity
  from (select customer_id,
               sum(quantity) as avg_quantity,
               avg(sum(quantity)) over () global_avg_quantity
          from orders,
               order_product
         where orders.order_id = order_product.order_id
         group by customer_id)
 where avg_quantity > global_avg_quantity;

但我看到你把SUMquantity作为平均数量,数量之和=平均

谢谢,简化的表格更容易阅读。数量之和不是平均值,顶级查询显示的是客户id以及数量大于平均值的客户的数量,因此我将其命名为“数量之和”,以方便自己。我现在需要的是oracle中的AS子句,以便存储临时生成的结果集。如果您对此有任何意见,我将不胜感激。@user1859596我提出的解决方案删除了子查询,因此不确定您为什么仍然朝着这个方向看。在Oracle中,存储结果集的方法是WITH子句分解的子查询,但在本例中不需要它,因为我们不会反复重用结果集。如果要将上面的查询结果作为更大sql的一部分多次重复使用,可以使用with res作为上面的查询选择..from res a,res b等。。。