我有一个块的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;