【问题标题】:Oracle will not allow me to continue no matter what I try [duplicate]无论我尝试什么,甲骨文都不允许我继续[重复]
【发布时间】:2013-11-27 06:30:38
【问题描述】:

请帮助我不知道我做错了什么。

select state, count(CID)
from customers
group by CID asc;

我正在尝试根据与之关联的唯一 CID 的数量按升序排列状态。我不断收到此错误:

ORA-00979:不是 GROUP BY 表达式 00979. 00000 - “不是 GROUP BY 表达式” *原因:*操作:第 2 行第 3 列出错

【问题讨论】:

    标签: sql oracle function select group-by


    【解决方案1】:

    如果要对结果集进行排序,则需要使用order by 子句,如下所示。

    另外,你想group by state 而不是by CID

    select 
      state, 
      count(distinct CID) 
    from 
      customers  
    group by 
      state
    order by 
      count(distinct CID) asc;
    

    由于您的问题提到了唯一 CID 的关联(我不能 100% 确定如何解释),您可能需要考虑使用 count(distinct CID) 而不是 count(CID)

    【讨论】:

    • 谢谢,但那是不行的。这是错误:
    • ORA-00979:不是 GROUP BY 表达式 00979. 00000 - “不是 GROUP BY 表达式” *原因:*操作:第 2 行错误:第 3 列
    【解决方案2】:

    您混合使用了 ORDER BY 和 GROUP BY 语句。正确的查询应该是这样的:

    select state, count(CID)
    from customers
    group by state
    ORDER BY 2 asc
    

    为了得到唯一CID的计数,你需要在COUNT函数中添加DISTINCT语句:

    select state, count(DISTINCT CID)
    from customers
    group by state
    ORDER BY 2 asc
    

    【讨论】:

    • 很好,这很有效。只是好奇“ORDER BY 2 asc”是什么意思?
    • @user2991463 表示按第二列升序排列。
    猜你喜欢
    • 2013-02-05
    • 2017-10-27
    • 2020-08-11
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2019-06-20
    相关资源
    最近更新 更多