group by和order by的组合在oracle中获得结果

时间:2016-07-26 12:51:15

标签: oracle oracle11g oracle10g

我有一张桌子,大致上有详细信息,例如离开,位置,DOJ,sal&年龄。

我想知道最大萨尔,最大年龄,疏忽和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

2 个答案:

答案 0 :(得分:2)

您有两种方式:

  1. location包括在GROUP BY条款中。
  2. 在您的选择中使用MAX(location)等汇总功能。

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