0

好的,所以我知道在选择语句中使用聚合函数(如 MAX、MIN、AVG 等)时。您需要对所有不使用聚合函数的选定列使用 GROUP BY 函数。EX

SELECT name, MAX(age)
FROM person
GROUP BY name

但我的问题是,当我对某些列使用自己的函数并在我的 select 语句中使用聚合函数时。前任

SELECT f_fullname(name, surname) as fullname, max(age)
FROM person

我应该将整个函数添加为 group by 子句的一部分吗?

GROUP BY f_fullname(name, surname)

因为此时我得到 ORA-00979 不是 GROUP BY 表达式错误。

谢谢你的帮助!

PS。选择语句仅用于解释目的**

4

1 回答 1

1

您可以拥有整个函数或作为参数的列。

select f_fullname(name , surname) full_name, max (age)
  from person
group by name, surname;

或者

select f_fullname(name , surname) full_name, max (age)
  from person
group by f_fullname(name , surname);

这是一个 sqlfiddle 演示

于 2013-07-08T10:17:58.193 回答