В Ora-00937: не один-группа функций

SELECT MIN(retail)
FROM books
WHERE category = 'COMPUTER'

отлично работает, но когда я включаю заголовок в select like:

SELECT MIN(retail), title
FROM books
WHERE category = 'COMPUTER'

это не так. Почему? Как заставить его работать?

2 ответов


ответ риса правильный, если это то, что вы имеете в виду, но вы, возможно, хотели title(s), где retail=MIN(retail), и эта формулировка предполагает, как получить этот ответ:

SELECT title, retail
FROM books
WHERE category = 'COMPUTER'
 AND retail = (SELECT MIN(retail) FROM books WHERE category = 'COMPUTER')

для уменьшения дублирования вы можете использовать WITH предложение (если вы используете последнюю версию SQL):

;WITH ComputerBooks AS (
  SELECT title, retail
  FROM books
  WHERE category = 'COMPUTER')
SELECT title, retail
FROM ComputerBooks
WHERE retail = (SELECT MIN(retail) FROM ComputerBooks)

образец, который я использовал для подтверждения синтаксиса.


MIN применяется к группе записей, поэтому вам нужно сказать, какую группу записей вы имеете в виду.

Если вы имеете в виду для каждого названия, показать минимум розничной торговли, то вам нужно:

SELECT MIN(retail), title FROM books
WHERE category = 'COMPUTER'
GROUP BY title