oracle10g中的group by子句

时间:2011-11-09 02:37:15

标签: oracle oracle10g

我正在使用oracle 10g并编写了这样的查询:

SELECT presenttime,
       employeeid
  FROM mobilelocation
 WHERE presentdate = '31-10-2011'
 GROUP BY employeeid;

产生错误消息

ORA-00979: not a GROUP BY expression

但删除此组子句后返回结果没有任何错误,

PRESENTTIME EMPLOYEEID
23:25   12304
23:48   12305

我的group by子句有什么问题,并建议我如何使用 order by 子句

2 个答案:

答案 0 :(得分:5)

GROUP BY表示您希望将表中的多行聚合为每个EmployeeID值的单行。如果这是您的目标,则需要在未分组的列上指定聚合函数。例如,如果您想要每个PresentTime的最早EmployeeID值,则可以执行类似

的操作
SELECT EmployeeID, MIN(PresentTime) earliestPresentTime
  FROM mobileLocation
 WHERE PresentDate = date '2011-10-31'
 GROUP BY EmployeeID

答案 1 :(得分:1)

您需要按presenttime,employeeID

进行分组

至于顺序;它类似于group by。

按employeeID,presentTIme(desc)订购

如果未定义聚合(min,max,sum,count等),则选择部分中的任何项目必须按部分分组。