Стандарт синтаксиса SQL-кода Oracle, ошибка «не групповая функция одной группы» - PullRequest
0 голосов
/ 30 августа 2011

У меня есть блок кода 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] ;

Может кто-нибудь объяснить мне или предложить источник, который говорит, что я не могу написать код, как я?

1 Ответ

2 голосов
/ 30 августа 2011

Вам нужно предложение 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...