В 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