2016-07-26 102 views
1

我有一个表,广泛地具有detamentid,location,DOJ,sal &年龄的细节。group by by and order by得到oracle中的结果

我想知道最大SAL,最大年龄,DEPID &地点组由DEPID:

我写了失败对表执行以下查询。

SELECT depid,location,MAX(sal),MAX(age) FROM company GROUP BY depid ORDER BY doj DESC 

错误: ORA-00979:不是GROUP BY表达式

表数据: table data

结果预计: out come

+1

[编辑]你的问题,并添加基于该数据的一些样本数据和预期输出。 _Formatted_文本,请[无屏幕截图](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-问题/ 285557#285557) –

回答

1

你应该这样写:

SELECT 
depid, 
first_value(location)over(partition by depid order by doj desc) location , 
MAX(sal), 
MAX(age) 
FROM company GROUP BY depid ORDER BY doj DESC 
+0

我想从所有depids中获取顶部位置id作为结果集。 – user4047127

+0

我编辑我的答案 –

2

有两种方式:

  1. 包括locationGROUP BY子句。
  2. 在你的选择中使用像MAX(location)这样的聚合函数。