Я новичок в SQL, работающий над заданием, чтобы найти актера или актрису с наибольшим количеством выступлений. Схема базы данных я работаю здесь: Здесь был вопрос, я пытался использовать:SQL - Найти объект с наибольшим количеством явлений
SELECT DISTINCT n.name, count(n.name)
FROM cast_info c
INNER JOIN name n
ON (n.id = c.person_id)
INNER JOIN title t
ON (c.movie_id = t.id)
CROSS JOIN role_type r
WHERE (r.role = 'actor' OR r.role = 'actress')
GROUP BY n.name
Это предназначено для подсчета того, сколько раз разные актеры показали, что до Затем я сортирую и выбираю верхнюю. Но это не сработает. Что-то еще, что я сделал:
SELECT n.name, count(n.name) AS amount
FROM cast_info c
INNER JOIN name n
ON (n.id = c.person_id)
INNER JOIN title t
ON (c.movie_id = t.id)
LEFT JOIN role_type r
ON c.role_id = r.id
AND (r.role = 'actor' OR r.role = 'actress')
GROUP BY amount
ORDER BY amount DESC
LIMIT 1
Но это дает ошибку
aggregate functions are not allowed in GROUP BY
LINE 1: SELECT COUNT(*) AS total FROM (SELECT n.name, count(n.name) ...
советы?
я не упомянул об этом в моем ответе, но причина, вы получаете сообщение об ошибке, потому что вы не можете сгруппировать по совокупному колонку. Сумма считается совокупностью, потому что она что-то подсчитывает, и она получает подсчет от группы. Он не может получить счет от себя. – AdamMc331