首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >count(*)方法引发错误sql +

问count(*)方法引发错误sql +
EN

Stack Overflow用户
提问于 2015-04-19 13:43:30
回答 2查看 76关注 0票数 0

我正在尝试使用count(*)方法,但总是会出现错误。

这是代码

代码语言:javascript
复制
SQL> select c.cname,avg(o.ord_amt) avg_order_amt , count(*) no_of_order from customer c, orders o  group b
y orderno;

错误是:

ORA-00979:不是按表达式分组

我很确定这是count(*)方法的错误

我需要显示cname no_of_orders,avg_order_amt,中间列是订单总数,最后是该客户的平均订单数量。

这是客户和订单的表:

代码语言:javascript
复制
SQL> desc customer
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------

 CUSTNO                                    NOT NULL NUMBER(3)
CNAME                                              VARCHAR2(25)
CITY    
                                                 VARCHAR2(12)

SQL> desc orders
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------

 ORDERNO                                   NOT NULL NUMBER(3)
ODATE                                     NOT NULL DATE
 CUSTNO                                             NUMBER(3)
 ORD_AMT                                            NUMBER(5)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-19 13:55:03

Oracle不像mysql那样工作,您可以使用任何具有分组函数的列。它给您带来的错误是因为您将这些分组函数与列一起使用,而不是按该列进行分组。

因此,为了执行查询工作,您必须这样做:

代码语言:javascript
复制
select c.cname, 
       avg(o.ord_amt) avg_order_amt , 
       count(*) no_of_order 
  from customer c, 
       orders o  
 group by c.cname;

你也错过了一个连接。查询的方式将在customer和orders表之间获得一个orders,这意味着注册中心的数量是另一个注册表的数量的一倍。

票数 0
EN

Stack Overflow用户

发布于 2015-04-19 13:53:50

我觉得你要找的是:

代码语言:javascript
复制
select c.cname,
       avg(o.ord_amt) avg_order_amt ,
       count(*) no_of_order
from   customer c,
join   orders o on o.customer_id = c.customer_id
group by c.cname;

我在猜测如何连接这两个表,这是您肯定需要做的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29730649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档