Я пытаюсь построить запрос, который выбирает имя группы и имя компакт-диска с наивысшими объемами продаж. Схема выглядит что-то вродеPostgres: ОШИБКА: столбец должен появиться в предложении GROUP BY или использоваться в агрегированной функции
группы (имя_группы groupCode)
кд (cdTitle, numberSold, groupCode)
Я построил запрос так:
SELECT mg.groupName, cd.cdTitle, MAX(cd.numberSold) as maxSold
FROM musicalGroup mg, cd cd
WHERE cd.groupCode = mg.groupCode
GROUP BY mg.groupCode
Но я получаю ошибка
ERROR: column "cd.cdtitle" must appear in the GROUP BY clause or be used in an aggregate function
Если я удалю cd.cdtitle из SELE Заявление CT Я могу получить правильные результаты, которые отображают
groupname... maxsold
"Test"... 80000
"Test2"... 81000
И так далее. Есть ли способ для меня также получить имя CD из этого запроса?
А, прошу прощения. Я сделал ошибку при копировании и вставке запроса. Проблема заключается в том, что я пытаюсь распечатать cd.cdTitle, а не группировать код и имя. Я отредактировал свой запрос, чтобы это отразить. – JCDJulian
Я обновил свой ответ тем, что, по моему мнению, имеет наибольший смысл. –
Хм. Это кажется странным. Он перечисляет каждый компакт-диск с самыми высокими продажами художника рядом с ним, когда я хочу, это ОДИН CD от каждого художника с самыми высокими продажами. – JCDJulian