Oracle SQL 代码语法标准,错误"not a single-group group function"



我有一个块的Oracle SQL代码的工作。我发现我不能同时获得cert列和max(run_time)。

select
  cert,
  max(run_time)
from
  bond_films
where title in
(
'Casino Royale','On Her Majesty_s Secret Service','Licence to Kill'
);

我正在阅读一个SQL参考,它有以下语法,但我认为我的代码匹配语法?

SELECT [column,] group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column] ;

有人可以解释这个给我或建议一个来源,说我不能写一个代码像我做了吗?

您需要GROUP BY子句,因为您已经包含了cert列。如果您只执行了SELECT MAX(run_time),则不需要提供GROUP BY,因为您正在选择所有行的最大值。但是,由于您请求了另一个列(cert), Oracle期望您希望检索每个不同cert的最大值。

select
  cert,
  max(run_time)
from
  bond_films
where title in ('Casino Royale','On Her Majesty_s Secret Service','Licence to Kill')
GROUP BY cert;

相关内容

最新更新