无论我尝试什么,Oracle都不允许我继续

时间:2013-11-14 09:51:01

标签: sql oracle function select group-by

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

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

我正在尝试根据与之关联的唯一CID的数量按升序获取状态。我一直收到这个错误:

  

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

2 个答案:

答案 0 :(得分:2)

如果要订购结果集,则需要使用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)而不是{{1 }}

答案 1 :(得分: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